6. Classes & Ingeritance
클래스와 상속 구조
치트시트
클래스는 기본
final, 상속하려면open상속/구현:
:사용부모 생성자 반드시 호출
오버라이드 시
override필수추상 클래스/인터페이스 인스턴스화 불가
인터페이스: default 키워드 없이 메소드 구현 가능, 프로퍼티 선언 가능
키워드:
final/open/abstract/override
1) 클래스 기본 특징
코틀린 클래스는 기본적으로 final → 상속 불가
상속을 허용하려면
open붙여야 함필드를 선언하면 자동으로 getter/setter가 붙어 “프로퍼티”로 동작
open class Animal(val name: String) {
open fun sound() = println("...")
}👉 자바에서는 모든 클래스가 기본적으로 상속 가능(open)이고, final로 막음.
2) 상속 문법
extends/implements대신:사용
부모 생성자를 반드시 호출해야 함
오버라이드 시
override키워드 필수
3) 추상 클래스 (Abstract Class)
abstract클래스는 인스턴스화 불가추상 멤버는 하위 클래스가 반드시 구현해야 함
4) 인터페이스 (Interface)
선언:
interface다중 구현 가능
default 키워드 없이 메소드 구현 가능
같은 메소드가 겹칠 경우
super<인터페이스>.메소드()로 특정 가능프로퍼티도 선언 가능 (backing field는 없음)
5) 상속 관련 키워드 정리
final: 오버라이드 금지 (기본값)open: 오버라이드 허용abstract: 반드시 오버라이드 필요override: 상위 타입 멤버를 재정의
👉 자바와 달리, 상속·오버라이드는 항상 명시적이어야 함.
6) 주의할 점
생성자/초기화 블록에서
open프로퍼티 사용 금지 → 예기치 못한 버그 발생 가능상위 생성자를 호출하지 않으면 컴파일 에러
7) 실무 예시
A. Spring Bean 계층 구조
→ 추상 클래스로 공통 템플릿 제공.
B. Android UI
C. 다중 인터페이스
Last updated