Home 클래스의 상속
Post
Cancel

클래스의 상속

클래스

상속

상속이 필요한 경우

  1. 이미 존재하는 클래스를 확장하여 새로운 클래스를 만들 때
  2. 여러 개의 클래스들의 공통점을 뽑아 코드 관리를 편하게 해야 할 때

기본 형태

  • 키워드 open 사용 (kotln은 상속 금지가 기본값이므로 open을 선언해야 상속이 가능하다.)
    • open class 슈퍼클래스(속성) {}
    • class 서브클래스(속성): 슈퍼클래스(속성초기화) {}

규칙

  1. 서브 클래스는 수퍼 클래스에 존재하는 속성과 ‘같은 이름’의 속성을 가질 수 없다.
  2. 서브 클래스가 생성될 때는 반드시 수퍼 클래스의 생성자까지 호출되어야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
open class Animal (var name:String, var age:Int, var type:String){
    fun introduce(){
        println("종류는 ${type}, 이름은 ${name}, 나이는 ${age}살 입니다.")
    }
}

class Dog(name: String, age: Int): Animal(name, age, "강아지"){
    // class의 자체 속성으로 만들어주는 var을 붙이지 말고 (var, val등을 붙이면 속성으로 선언됨)
    // 일반 parameter로 받아 Animal 클래스의 생성자에 직접 넘겨준다.
    fun bark(){
        println("왈왈")
    }
}

fun main(){
    var dog1 = Animal("멍멍", 2, "강아지")
    var dog2 = Dog("짱구", 3)
    //dog1=dog2
    a.introduce()
    b.introduce()
    b.bark()
}