-
[코틀린] 상속과 인터페이스카테고리 없음 2024. 3. 7. 09:48
상속
클래스 기능을 확장하려 할 때 현재 클래스의 기능을 가지고
자신만의 새로운 기능이 추가된 클래스를 정의하는 방법이다.
상속을 하게되면 자식과 부모 클래스간에 상/하 계층구조를 가지게 된다.
코틀린은 무분별한 상속을 막기 위해 모든 클래스는 기본적으로 final이 붙기 때문에
open 키워드를 붙여야 상속할 수 있다.
자식 클래스에서 다중 상속은 불가하다.
왜냐하면 부모 클래스가 두개의 같은 메서드가 있으면 둘 중 어느 메서드를 호출할 지 알 수 없기 때문이다.
// (x) <- 일반 class 상속 class Country class Korea : Country() // (o) <- open 키워드로 상속 open class Animal class Cow : Animal() // (x) <- 다중 상속 open class Animal open class Mammal class Lion : Animal(), Mammal()
인터페이스
이것 또한 클래스 기능을 확장하기 위해 사용한다.
위 상속과 다른 점은 다중 구현이 가능하다는 점이다.
// (o) <- interface 구현 interface Country { var money: Int fun getCitizens(): List<UUID> } class Korea : Country { override var money = 10000 override fun getCitizens(): List<UUID> = emptyList() } // (O) <- 다중 구현 open class Animal interface Mammal interface Cat class Lion : Animal(), Mammal, Cat