상속
부모 클래스 : open class 클래스명 { }
자식 클래스 : class 클래스명 : 부모 클래스명() { }
다른 클래스의 부분을 그대로 물려받는 것
- 코드의 중복을 피하기 위해 사용 (중복 최소화)
- 코틀린에서 class 선언할 경우 자바 파일에서 final class로 변환
→ open 키워드 사용 : 일반 class로 정의 & 상속 가능
- 클래스의 객체 생성시 부모 클래스의 기본 생성자(매개변수가 없는)가 자동 호출
- 부모 클래스에 기본생성자가 없는 경우 : 자식 클래스에서 명시적으로 호출
open class SuperClass(var a1:Int)
class SubClass : SuperClass2{
constructor() : super(100){
}
}
class SubClass2 : SuperClass(100)
객체 생성
- 모든 객체는 부모 클래스형 참조 변수에 담을 수 있다.
- 부모 클래스형 참조 변수를 사용하는 경우 : 부모 클래스에 정의되어 있는 멤버만 사용 가능
* SuperClass : 부모 클래스(상속하는 클래스)
* SubClass : 자식 클래스(상속받는 클래스)
Overriding
부모 메서드 : open fun 함수명() { }
자식 메서드 (overriding) : override fun 함수명() { }
부모 클래스의 메서드를 자식 클래스에서 재정의
- 부모 클래스의 메서드의 이름, 매개변수 형태 모두 동일해야 한다.
- 코틀린에서 method 선언할 경우 자바 파일에서 final method로 변환
→ open 키워드 사용 : 일반 method로 정의 & overriding 허용
- override 키워드 사용 : overriding한 메서드라는 것 명시
객체 생성
- 부모 클래스 타입 변수로 Overriding한 method를 호출할 경우 자식 method 호출
this
객체 자기 자신 지칭
- 멤버 변수(메서드)와 메서드 내부 변수(메서드) 구분할 때 사용
- 생성자에서 다른 생성자 호출할 때 사용
super
부모 영역 지칭
- overriding한 상황에서 부모 메서드(생성자)를 호출하는 경우
- 멤버 변수와 상속받은 멤버 변수 구분할 때 사용
- overriding한 메서드와 부모 메서드 구분할 때 사용