파게로그
[OOP] inheritance 본문
Inheritance(상속)은 OOP의 핵심적인 기능 중 하나로서, 사용자가 기존에 존재하는 base class로부터 새로운 derived class를 생성할 수 있도록 한다. derived class는 base class로부터 모든 자질을 이어받으며, 자체적인 추가 자질을 가질 수 있다. inheritance를 이용하고자 한다면, derived class가 is a 관계가 맞는지 잘 확인해야만 한다.
기본적으로 Kotlin에서 클래스는 final이기에, open 키워드를 붙여서 이를 통해 derived class를 생성할 수 있도록 해야 한다.
open class Person(var name: String, var age: Int) {
init {
println("Person init: Created with values $name, $age.")
}
open fun introduce() {
println("My name is $name.")
println("I am $age years old.")
}
}
class Teacher(name:String, age: Int, var subject: String): Person(name, age) {
init {
println("Teacher init: Created with values $name, $age, $subject.")
}
fun teach() {
println("$name is teaching $subject...")
}
}
class Student(name:String, age: Int, var goal: Char): Person(name, age) {
init {
println("Student init: Created with values $name, $age, $goal.")
}
fun study() {
println("$name is studying for $goal...")
}
}
fun main(args: Array<String>) {
var person = Student("Ella", 12, 'A')
person.introduce()
person.study()
}
실행결과는 다음과 같다.
Person init: Created with values Ella, 12.
Student init: Created with values Ella, 12, A.
My name is Ella.
I am 12 years old.
Ella is studying for A...
Student 클래스의 객체가 생성되면, 일단 파라미터가 primary constructor에 전달된다. Kotlin에서는 객체가 생성되면 가장 먼저 init 블록을 찾는다. derived class의 init 블록이 먼저 실행되고 그 다음 base class의 init 블록이 실행된다.
'콤퓨타 왕기초 > Kotlin' 카테고리의 다른 글
[OOP] Abstract class, Interface (0) | 2021.06.12 |
---|---|
[OOP] Visibility Modifiers (0) | 2021.06.12 |
[OOP] Getters and Setters (0) | 2021.06.11 |
[OOP] Constructors (0) | 2021.06.10 |
[OOP] OOP, Class and Objects (0) | 2021.06.10 |
Comments