240510_디모의 코틀린 강의 #10강. 클래스의 상속

2024. 5. 6. 21:07TIL(Today I Learned)

유튜브 - 디모의 코틀린 문법 강의 정리

 

#10강. 클래스의 상속

 

1. 클래스의 분류

 1) 수퍼 클래스: 물려주는 클래스

 2) 서브 클래스: 물려받는 클래스

class Animal(var name:String, var age:Int, var type:String){
	fun introduce(){
    	println("${type} ${name}이고 ${age}살입니다.")
    }
}

 

2. 클래스의 규칙

 1) 서브 클래스는 수퍼 클래스에 존재하는 속성와 같은 이름의 속성을 가질 수 없다.

 2) 서브 클래스가 생성될 때는 반드시 수퍼 클래스의 생성자까지 호출되어야 한다.

// Animal 클래스로부터 상속받는 Dog, Cat 클래스를 생성

open class Animal(var name:String, var age:Int, var type:String)){
// 클래스가 상속될 수 있도록 클래스 선언 시 키워드 open을 같이 작성
	fun introduce("${type} ${name}이고 ${age}살입니다.")
}

// 상속하는 방법: 콜론(:) + 슈퍼클래스의 생성자를 호출(서브 클래스의 고정된 속성값은 그 고정값을 작성)

// Dog 클래스를 생성
class Dog(name:String, age:Int): Animal(name, age, "개")

// 서브클래스 안에 고유한 함수를 추가할 수 있음
class Dog(name:String, age:Int): Animal(name, age, "개"){
	fun bark(){
    	printin("멍멍"))
    }
}

// Cat 클래스를 생성
class Cat(name:String, age:Int) : Animal(name, age, "고양이"){
	fun meow(){
    	println("야옹")
    }
}

var c = Cat("나비", 5)
c.meow() // -> 야옹

// 주의사항: 지나친 상속 구조는 클래스를 복잡하게 만들 수 있다.