🎨 Programming/Android(Kotlin)

[Kotlin] 11. 상속(inherit) 및 인터페이스(interface)

ryang x2 2020. 12. 1. 23:15
728x90
반응형

# 상속 

- 부모클래스로 부터 데이터(필드, 메소드)를 물려 받습니다. 

 

- 코틀린에서의 최상의 클래스는 Any이다 .

- 명시적으로 상속관계를 표현하기 위해서는 class 의 헤더부분에 콜론(:) 과 상속받고자 하는 클래스를 적어주면 된다 .
- 상속관계에서는 open 키워드를 사용해야한다 .

  이유는 Kotlin에서 class는 기본적으로 final로 되어있기때문에 open을 사용해주어서 열어줘야 한다 .

 

- 오버라이딩 될 메서드에는 open 어노테이션을

- 오버라이딩 된 메서드에서는 override 어노테이션을 사용하여야 한다 .



출처: https://zzdd1558.tistory.com/238 [윤들윤들]

open class Car3() {
    open fun drive(): String{
        return "주행합니다."
    }
    fun stop(): String{
        return "멈춥니다."
    }
}

class Taxi(): Car3() {
    override fun drive(): String{
//        return "빠르게 주행합니다."
        val run = super.drive()
        return "빠르게 $run"
    }
}

fun main(args: Array<String>){
    val taxi: Taxi = Taxi()
    println(taxi.drive())
}

 

 

# 인터페이스 (interface) 

인터페이스는 개발의 대한 약속!

 

● 상속이 만들어낸 특징

- 자식 클래스는 부모 클래스의 타입
- 부모 클래스는 자식 클래스의 타입이 아님

 

● 상속과 다른점

- 상속은 조상을 찾아 데이터를 받는 방법
- 인터페이스는 종의 특징

 

예시 )

interface Person {
    fun eat()
    fun sleep()
}

interface Human{
    fun eat(){
        println("먹습니다.")
    }
    fun sleep(){
        println("잡니다.")
    }
    abstract fun study()
}

class Student1: Person{
    override fun eat() {
        println("먹습니다.")
    }

    override fun sleep() {
        println("잡니다.")
    }
}

class Student2 : Human{
    override fun study() {
        println("공부합니다.")
    }
}

fun main(args: Array<String>){
    val student1: Student1 = Student1()
    student1.eat()
    student1.sleep()
    val student2: Student2 = Student2()
    student2.eat()
    student2.sleep()
    student2.study()
}

728x90
반응형