Kotlin32 [코틀린] Companion Object, object 선언 Companion Object 코틀린에서는 static 키워드를 사용할 수 없는 대신, 정적 변수를 선언할 수 있도록 Companion Object를 제공한다. companion object { 정적으로 선언할 변수, 함수들 } class P{ companion object{ var age : Int = 10 //정적 변수 fun printAge() //정적 함수 { println(age) } } } fun main() { P.printAge() } object와 싱글톤 object로 선언된 객체는 프로퍼티, 메서드에 객체 생성 없이 접근이 가능하다. 단일 인스턴스를 생성하기 때문에 싱글톤 패턴을 구현하는데 사용된다. 주 생성자, 부 생성자를 사용할 수 없다. (대신 init은 사용가능) object P.. 2020. 9. 19. [코틀린] 위임 (Delegation) 위임 (Delegation) 실세계에서의 위임은 특정 일을 대신하는 중간자 역할 by를 사용하여 특정 클래스를 확장하거나 이용할 수 있다. 하나의 클래스가 다른 클래스에 위임하도록 선언 → 위임된 클래스가 가지는 멤버를 참조없이 호출 가능 프로퍼티 위임 : 프로퍼티의 getter, setter를 특정 객체에게 위임하고 그 객체가 값을 읽거나 쓸 때 수행하도록 함 var | val | class 프로퍼티, 클래스 이름 : 자료형 by 위임자 interface P1{ fun talk(){ println("P1 talk") } } class P2 : P1{ } val p1 = P2() class P3 : P1 by p1{ } fun main() { var p3 = P3() p3.talk() } 위임의 목적 코.. 2020. 9. 19. [코틀린] 프로퍼티의 오버라이딩 프로퍼티의 오버라이딩 코틀린에서는 프로퍼티도 오버라이딩이 가능함 부모 클래스의 프로퍼티에 open 키워드를 붙이면 상속 가능한 프로퍼티가 된다. (기본적으론 final 변수임) 자식 클래스에선 override 키워드를 프로퍼티 앞에 붙여서 오버라이딩 가능 open class Parent (open var name : String, var age : Int){ init { println("초기화 블록 : name,age") } class Child : Parent("Park",30) { override var name: String = "Kim" } } 2020. 9. 19. [코틀린] 주 생성자 주 생성자 클래스 이름과 함께 생성자 정의를 한다. 클래스 이름 - 블록 시작 부분 사이에 선언 선언 방법 1 주 생성자의 매개변수를 프로퍼티에 할당한다. class Test (_name : String, _age : Int){ var name = _name var age = _age } 선언 방법 2 프로퍼티를 포함한 주 생성자 val, var를 사용하여 매개변수를 선언하면 인자를 따로 생성해서 할당할 필요가 없다. class Test (var _name : String, var _age : Int){ } 초기화 블록 init { } 부 생성자처럼 프로퍼티 할당 외에 다른 초기화 작업을 주 생성자에서도 할 수 있게 해준다. class Test (var _name : String, var _age : I.. 2020. 9. 19. 이전 1 2 3 4 5 6 7 8 다음