전체 글
-
[Kotlin] this, superKotlin 2022. 9. 14. 15:38
this 용도 1. 멤버변수와 매개변수(또는 지역변수)의 이름이 같을때 그들을 구분하기 위해 사용 2. 기본(대표) 생성자가 있는경우 보조 생성자에서 기본생성자의 매개변수 갯수와 자료형에 맞춰서 반드시 호출해야 하는데, 이때 this 카워드를 사용 3. 매서드 내부에 다른 매서드(이름하여 지역 매서드:지역변수와 같은 의미)를 만들어 쓸 수 있는데 맴버메서드와 구분하기 위해 사용 class TestClass41 ( var a2:Int ){ var a1:Int = 200 // 보조 생성자는 반드시 대표생성자를 this 키워드를 이용해서 호출해야함 // 대표생성자의 매개변수가 멤버변수로 생성되어야 하는데 호출되지 않으면 생성 안됨 constructor() : this(300){} fun testMethod1(..
-
[Kotlin] Any ClassKotlin 2022. 9. 14. 15:36
-Any 클래스는 자바에서는 Object 클래스와 같은 모든 클래스의 부모클래스가 되는 클래스임 -이미 만들어져 있거나 앞으로 생성될 클래스에 따로 명시하지 않아도 다른 클래스를 상속받지 않고 있다면 그 클래스는 Any 클래스를 상속받고 있다고 보아야함 -다만 다른 클래스를 상속 받고 있는 클래스는 그 부모클래스가 Any 클래스를 상속 받고 있기 때문에 결과적으로 자기 자신도 Any 클래스의 자식(손자)클래스가 된다고 봐야 함 package days02 fun main(){ val obj1 = TestClass31() println("obj1: $obj1") // 참조변수를 println에 넣으면 Any 클래스에서 상속 받은 toString() 메서드가 실행되어 // 클래스 이름과 해쉬코드가 출력됨. /..
-
[Kotlin] OverrideKotlin 2022. 9. 14. 15:35
package days02 fun main(){ val obj2:SubClass2 = SubClass2() // 오버라이딩 된 메서드를 실행함 obj2.superMethod2() // 부모클래스의 래퍼런스변수에 자식클래스의 인스턴스를 저장함 val obj3:SuperClass2 = SubClass2() // 부모클래스의 래퍼런스 변수로 호출한 메서드는 // 자식 클래스에서 재정의된 메서드가 우선 실행됨 obj3.superMethod2() println() testFun(obj2) // 전달인수로 자식 인스턴스 주소를 저장하고 있는 자식 클래스 참조변수 전달 testFun(obj3) // 전달인수로 자식 인스턴스 주소를 저장하고 있는 부모 클래스 참조변수 전달 val obj4: SuperClass2 = S..
-
[Kotlin] ExtendsKotlin 2022. 9. 14. 15:32
fun main(){ val s1= SubClass1() // 자식 클래스의 객체 생성 println("s1.subMember1: ${s1.subMember1}") s1.subMember1() println("s1.superMember1: ${s1.superMember1}") s1.superMethod1() } // 상속이 될 클래스들이 final로 만들어짐. 이는 상속 불가능하므로 open 키워드를 옆에 붙임 open class SuperClass1{ var superMember1 = 100 fun superMethod1(){ println("method of SuperClass1") } } // 상속은 extends 키워드 없이 부모 클래스 이름을 ':', '()'와 함께 클래스 옆에 써줌 class..
-
[Kotlin] ConstructorKotlin 2022. 9. 14. 15:29
Kotlin은 클래스에 init 코드 블록을 만들어 주면 객체 생성 시 자동으로 처리되는 코드를 만들 수 있음. 멤버변수에 값을 초기화하는 기능도 가능. init 블럭은 생성자와 비슷한 역할을 할 수 있는 영역이지만 전달인수나 기타의 함수로서의 기능은 없는 단순 블럭. init 블럭은 멤버변수 초기화, 생성자는 그 외 객체 생성 시 해야할 일들이 실행됨. fun main(){ val obj1 = TestClass11() println("obj1: $obj1") } class TestClass11(){ init{ println("객체가 생성되면 자동으로 동작되는 부분") } } fun main(){ val obj2 = TestClass12() // 매개변수가 없는 생성자 호출 println("obj2: $..
-
[Kotlin] ClassKotlin 2022. 9. 14. 15:24
자바는 프로그램 자체도 클래스임. 클래스로 프로그램의 실행과 자료들이 모두 관리됨. -> 객체지향프로그램 객체지향 프로그램의 반대개념이 구조화프로그램. 이는 함수 중심으로 프로그램 시작과 끝이 관리됨. 코틀린 자료들은 클래스로 프로그램 시간과 끝 관리는 함수로 병행하여 운용되는 형태. 생성된 클래스 형태로 객체를 생성함. 클래스명 참조변수이름 = new 클래스명() // 자바 val 참조변수이름: 클래스명 = 클래스명() // 코틀린 fun main(){ val obj1: TestClass1 = TestClass1() // 정의된 클래스의 객체 생성 val obj2: TestClass2 = TestClass2() // new를 쓰지 않아도 새공간이 할당됨 // new를 쓰지 않는다고 새로운 공간이 만들어..
-
[Kotlin] ArrayKotlin 2022. 9. 14. 15:22
// 1. // 코틀린 배열생성은 arrrayOf를 자주 이용함 val array1 = arrayOf(10, 20, 30 , 40, 50) println("1. array1: $array1") // 클래스 이름과 해쉬코드 등이 출력됨 // 2. // 배열의 요소들을 한번에 출력하려면 contentToString 함수 사용 println("2. array1: ${array1.contentToString()}") // 3. // 코틀린의 배열은 일단 자료형의 제약이 없어서 자바의 리스트 등처럼 여러 자료형데이터를 // 자료형 데이터를 하나의 배열에 넣어서 사용할 수 있음. // 다만 그것이 권장할 만한 동작은 아니기에 자료형을 제한하는 코드가 제공되어 사용됨 // 자료형 제약없이 사용 val array2 =..
-
[Kotlin] LoopKotlin 2022. 9. 14. 15:20
증가 package days01 fun main(){ // 코틀린의 for문은 자바에서처럼 시작값 끝값 증감량 등을 사용하지 않고 범위데이터만 사용함 val a1=1 .. 10 for(item in a1){ print("$item\t") } } // 범위데이터로 사용되는 대상은 배열, 리스트, Map, ...을 이용한 범위데이터 등이 사용됨 val a2=1 .. 10 step 2 // 2씩 증가하는 범위 데이터 for(item in a2){ print("$item\t") } 감소 // 10부터 1까지 줄어드는 범위데이터 사용 // val a3= 10.1 val a3=10 downTo 1 for(item in a3){ print("$item\t") } val a4=10 downTo 1 step 2 for(..