kotlin
-
[Kotlin] InterfaceKotlin 2022. 9. 14. 15:46
package days02 fun main(){ val obj31 = TestClass31() // Inter1 을 상속(구현)받은 자식클래스 val obj32 = TestClass32() // Inter2 를 상속(구현)받은 자식클래스 val obj33 = TestClass33() // Inter1, Inter2 을 상속(구현)받은 자식클래스 obj1.inter1_Method1() obj1.inter1_Method2() obj2.inter2_Method1() obj2.inter2_Method2() obj3.inter1_Method1() obj3.inter2_Method1() obj3.inter1_Method2() obj3.inter2_Method2() // 부모중 해달 인터페이스가 있는 객체만 전달인수..
-
[Kotlin] AbstractKotlin 2022. 9. 14. 15:43
package days02 fun main(){ // val obj1 = Super1() // 추상클래스만의 객체생성은 불가능 val obj1 = Sub1() obj1.method1() obj1.method2() println() val obj2 = Sub2() obj2.method1() obj2.method2() println() testFuntion(obj1) testFuntion(obj2) } // 부모클래스의 참조변수가 멤버변수로 있기때문에, 그 자식 클래스의 객체를 전달인수로 전달 가능 fun testFun1(obj1:Super1){ obj1.method1() obj1.method2() } // 추상클래스: 상속을 위한 클래스. 멤버메서드의 override에 강제성을 부여하기위해 사용 open ..
-
[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를 쓰지 않는다고 새로운 공간이 만들어..