본문 바로가기

코틀린30

[코틀린] 위임 (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.
[코틀린] Unit Unit 함수의 반환값을 생략하고 싶을 때 지정하는 반환값의 자료형 자바의 void와 유사한 역할을 한다. //반환값 생략 -> 자동으로 Unit으로 반환값 타입 추론 fun add1(a : Int, b : Int) { a + b } //Unit 반환 fun add2(a : Int, b : Int) : Unit { a + b return } // 둘다 동일한 구문 void와의 차이점 void는 아무 것도 반환하지 않지만 Unit은 Unit이라는 특수한 객체를 반환하는 것 2020. 9. 19.