Kotlin class 1부
자바와 달리 코틀린 선언은 기본적으로 final이며 public이다.
게다가 중첩 클래스는 기본적으로는 내부 클래스가 아니다. 즉 코르린 중첩 클래스에는 외부 클래스에 대한 참조가 없다.
코틀린 인터페이스는 자바 8 인터페이스와 비슷하다. 코틀린 인터페이스 안에서는 추상 메소드뿐 아니라 구현이 있는 메소드도 정의 가 가능(자바8의 디폴트 메소드와 유사)
다만 인터페이스에는 아무런 상태도 들어갈수 없다!.
ex) interface 구현 방법
1
2
3
4
5
6
7
8 interface Calculator{
fun add()
}
class Sample : Calculator{
override fun add() = println("add!!!")
}
코틀린에서 클래스 이름 뒤에 : 을 붙이고 인터페이스와 클래스 이름을 적는 것으로 클래스 확장과 인터페이스 구현을 모두 처리한다.
코틀린 클래스에서 상속과 구현을 쓰려면? 아래의 정보를 알아햐 한다.
자바의 클래스와 메소드는 기본적으로 상속에 대해 열려 있지만 코틀린의 클래스와 메소드는 기본적으로 final이다. 어떤 클래스의 상속을 허용하려면 클래스 앞에 open변경자를 붙여야 한다. 그와 더불러 오버라이드를 허용하고 싶은 메소드나 프로퍼티 앞에도 open 변경자를 붙여야 한다.
열린 클래스 정의하기
1 | open class Sample : Calculator{ |
오버라이드 금지하기
1
2
3
4
5 open class Sample : Calculator{
final override fun click() {}
}
상속을 제어하는 변경자
변경자 | 변경자가 붙으면 | 설명 |
---|---|---|
final | 오버라이드 불가 | 클래스 멤버의 기본 변경자 |
open | 오버라이드 가능 | open 명시에만 오버라이드가 가능 |
abstract | 반드시 오버라이드 | 추상클래스에서만 이 변경자를 붙일수 있다. |
override | 상위 클래스나 상위 인스턴스의 멤버를 오버라이드 중 | 하위클래스의 오버라이드를 금지하려면 final 을 명시하자 |
참고서적
- Kotlin In ACTION
- 에이콘 출판사