본문 바로가기
Language/Kotlin

[Kotlin] 상속 클래스 만들기 (Inheritance)

by Jay Son 아기 냥이 해린 짱💖 2021. 6. 20.

코들린도 자바와 같이 상속 메커니즘을 제공합니다.

 

 

open class Dog {                // 1
    open fun sayHello() {       // 2
        println("wow wow!")
    }
}

class Yorkshire : Dog() {       // 3
    override fun sayHello() {   // 4
        println("wif wif!")
    }
}

fun main() {
    val dog: Dog = Yorkshire()
    dog.sayHello()
}

결과 : wif wif!

 

설명

1. 상속 클래스를 생성하기 위해서는 "open" class 로 클래스 생성 필요.

2. 상속 메소드를 사용하기 위햇도는 "open" 메소드 사용 후 "override" 후 재정의 할 수 있음.

3. main()에서 Yorkshire() 생성 후 sysHello() 메소드 호출 할 경우 위 결과와 같이 Yorkshire() 클래스에서 sysHello() 메소드를 재정하 했기 때문에 결과는 Yorkshire() 클래스 sysHello 메소드 print문이 출력되는 것을 확인 할 수 있다.

 

상속 클래스 파라미터 사용

open class Tiger(val origin: String) {
    fun sayHello() {
        println("A tiger from $origin says: grrhhh!")
    }
}

class SiberianTiger : Tiger("Siberia")                  // 1

fun main() {
    val tiger: Tiger = SiberianTiger()
    tiger.sayHello()
}

결과 : A tiger from Siberia says: grrhhh!

설명

1. SiberianTiger 클래승서 Tiger 클래스를 상속 받을 때 Siberia 파라미터 전달 했기 때문에 Tiger 객체 sysHello() 메소드 $origin 문구가 전달되어 출력되는 것을 확인 할 수 있다.

 

생성자 인수를 슈퍼 클래스(Lion)에 전달 

open class Lion(val name: String, val origin: String) {
    fun sayHello() {
        println("$name, the lion from $origin says: graoh!")
    }
}

class Asiatic(name: String) : Lion(name = name, origin = "India") // 1

fun main() {
    val lion: Lion = Asiatic("Rufo")                              // 2
    lion.sayHello()
}

결과 : Rufo, the lion from India says: graoh!

1. Asiatic 클래스는 Lion 클래스를 상속 받으면서 첫번째 인자를 생성자가 전달 할 수 있도록 name = name으로 생성,

2. Asiatic 클래스는 Lion 클래스를 상속 받으면서 두번째 인자를 "India" 문구를 전달.

3. main() 에서 Asiatic 객체를 생성하요 sysHello() 호출 할 경우 Asiatic 객체 생성시 "Rufo" 문구가 Lion으로 전달 됨.

4. 최종 Lion 클래스의 sysHello 메소드가 호출되고 첫번째 인자는 객체 생성시 전달 받은 "Rufo" 문구, 두번째 인자는 Asiatic 클래스 생성시 전달된 "India" 문구가 전달되어 출력되는 것을 확인 할 수 있다.

 

 

 

출처 : https://play.kotlinlang.org/byExample/01_introduction/07_Inheritance

 

Kotlin Playground: Edit, Run, Share Kotlin Code Online

 

play.kotlinlang.org

 

반응형