Dev/Kotlin

코틀린 - 클래스, 객체, 인터페이스(요약)

healthyryu 2018. 9. 25. 15:16

4장 클래스, 객체, 인터페이스


- 코틀린의 인터페이스는 자바 인터페이스와 비슷하지만 디폴트 구현을 포함할 수 있고, 프로터티도 포함할 수 있다.

- 모든 코틀린 선언은 기본적으로 final이며, public 이다.

- 선언이 final이 되지 않게 만들려면(상속과 오버라이딩이 가능하게 하려면) 앞에 open을 붙여야 한다.

- internal 선언은 같은 모듈 안에서만 볼 수 있다.

- 중첩 클래스는 기본적으로 내부 클래스가 아니다. 바깥쪽 클래스에 대한 참조를 중첩 클래스 안에 포함시키려면 inner 키워드를 중첩 클래스 선언 앞에 붙여서 내부 클래스로 만들어야 한다.

- sealed 클래스를 상속하는 클래스를 정의하려면 반드시 부모 클래스 정의 안에 중첩 클래스로 정의해야 한다.

- 초기화 블록과 부 생성자를 활용해 클래스 인스턴스를 더 유연하게 초기화할 수 있다.

- field 식별자를 통해 프로퍼티 접근자 안에서 프로퍼티의 데이터를 저장하는 데 쓰이는 뒷받침하는 필드를 참조할 수 있다.

- 데이터 클래스를 사용하면 컴파일러가 equals, hashCode, toString, copy 등 의 메소드를 자동으로 생성해준다.

- 클래스 위임을 사용하면 위임 패턴을 구현할 때 필요한 수많은 성가진 준비 코드를 줄일 수 있다.

- 객체 선언을 사용하면 코틀린답게 싱글턴 클래스를 정의할 수 있다.

- 동반 객체는 자바의 정적 메소드와 필드 정의를 대신한다.

- 동반 객체도 다른 객체와 마찬가지로 인터페이스를 구현할 수 있다. 외부에서 동반 객체에 대한 확장 함수와 프로퍼티를 정의할 수 있다.

- 코틀린의 객체 식은 자바의 무명 내부 클래스를 대신한다. 하지만 코틀린 객체식은 여러 인스턴스를 구현하거나 객체가 포함된 영역에 있는 변수의 값을 변경할 수 있는 등 자바 무명 내부 클래스보다 더 많은 기능을 제공한다.

반응형

'Dev > Kotlin' 카테고리의 다른 글

코틀린 - 코틀린 타입 시스템 (정리)  (0) 2018.09.30
코틀린 - 람다로 프로그래밍(요약)  (0) 2018.09.27
커니의 코틀린 - 3장 (데이터 클래스)  (0) 2018.07.16
let 함수  (0) 2018.06.21
엘비스 연산자 - ?:  (0) 2018.06.11