computer_study

[Kotlin] 08. 클래스 계층 이해하기 본문

스터디/코틀린 완벽 가이드

[Kotlin] 08. 클래스 계층 이해하기

knowable 2022. 6. 3. 03:15

1. 상속

  • extends, implements 대신 콜론(:)으로 표시
  • 코틀린 함수와 프로퍼티는 기본적으로 final, 오버라이드하게 허용하기 위해선 open을 명시해야 한다.
    (반대로 자바에선 프로퍼티가 암시적으로 open, final을 사용해 오버라이드를 막는다.)
  • 코틀린에선 멤버를 오버라이드 하는 경우에 override 키워드를 앞에 붙여야 한다
    (자바에서는 꼭 표시를 하지 않아도 된다)
open class Vehicle{
    var currentSpeed = 0
    
    fun start(){
        println("I'm moving")
    }
    
    fun stop(){
        println("Stopped")
    }
}

open class FlyingVehicle : Vehicle(){
    fun takeOff(){
        println("Take off")
    }
    fun land(){
        println("Landed")
    }
}

class Aircaft(val seats: Int) : FlyingVehicle() 
// open이 없으면 final클래스로 간주
// Class Airbus(seat: Int) : Aircraft(seats) 이라면 오류가 발생한다
  • protected
    • 공통점
      • 하위클래스에서 상위 클래스의 protected 멤버 접근을 허용한다
    • 차이점
      • 자바는 페키지에 속한 아무 코드에서나 멤버에 protected 멤버에 접근할 수 있다.
      • 코틀린에선 위와 같은 접근이 금지된다.
  • 생성자간의 호출
    • 코틀린에선 생성자 간의 호출이 생성자 본문에 들어가는 일이 없다.(위임 호출 구문을 항상 사용해야 한다.)

 

2. 추상 클래스와 인터페이스

  • 자바
    • 인터페이스 상속 시 implements, class 상속 시 extends
  • 코틀린
    • 모든 상속을 똑같은 기호(:)를 사용해서 표시한다.

 

 

Comments