코틀린 클래스와 상속(Inheritance) 완벽 정리
코틀린의 클래스는 기본적으로 상속이 금지되어 있다.
상속을 허용하려면 open 키워드를 명시해야 하며,
이를 통해 부모 클래스의 속성과 메서드를 재사용할 수 있다.
기본 클래스 선언
기본적으로 코틀린 클래스는 final이므로 상속이 불가능하다.
상속하기
클래스를 상속하려면 : (콜론)을 사용한다.
부모 클래스가 open 으로 선언되어 있어야 한다.
open과 override
-
open: 상속 가능하도록 허용 -
override: 부모의 메서드를 재정의할 때 사용
super 키워드
부모 클래스의 메서드나 속성에 접근할 때 super를 사용한다.
init 블록 (초기화 블록)
객체가 생성될 때 자동 실행되는 초기화 구문이다.
생성자 상속
부모 클래스에 주 생성자(primary constructor) 가 있다면,
자식 클래스는 반드시 이를 호출해야 한다.
속성 오버라이드
속성(property)도 open 과 override 로 재정의할 수 있다.
추상 클래스 (abstract class)
abstract 클래스는 인스턴스를 만들 수 없고,
상속을 통해서만 사용할 수 있다.
추상 메서드는 반드시 하위 클래스에서 구현해야 한다.
sealed 클래스
sealed 클래스는 상속 가능한 범위를 제한하는 특수한 클래스다.
주로 when 구문과 함께 사용되어 안전한 타입 분기를 처리할 때 유용하다.
다중 상속 불가, 인터페이스로 대체
코틀린은 클래스 다중 상속을 지원하지 않는다.
대신 여러 인터페이스를 동시에 구현할 수 있다.
부모 클래스의 속성 접근
부모 클래스의 생성자 속성은 자식 클래스에서 super로 접근 가능하다.
상속과 접근 제한자
| 키워드 | 의미 | 상속 가능 여부 |
|---|---|---|
public |
어디서나 접근 가능 | 가능 |
protected |
하위 클래스에서만 접근 가능 | 가능 |
internal |
같은 모듈 내에서만 접근 가능 | 제한적 |
private |
같은 클래스 내부에서만 접근 가능 | 불가능 |
실전 예시: 상속 구조 설계
팁
-
open을 명시하지 않으면 상속 불가 -
super를 통해 부모 기능 재사용 -
sealed class로 안전한 분기 처리 가능 -
abstract class는 공통 인터페이스와 기본 동작을 함께 정의할 때 유용 -
다중 상속이 필요할 땐 인터페이스 조합으로 해결

답글 남기기