상속
(+) 부모/자식 클래스로 구분해 공통적인 요소들을 한번에 작성 가능
(+) 다형성 구현
(+) 부모 클래스에서 변경한 내용이 자식 클래스에도 적용
** 코틀린에서는 생략된 final 키워드 때문에 기본적으로 상속이 막혀있음
--> open 키워드로 상속관계를 만들 수 있음
1. 부모클래스에서 생성자를 사용하지 않을 때
fun main() {
var bird = Bird()
var chicken = Chicken()
var sparrow = Sparrow()
var pigeon = Pigeon()
bird.fly()
chicken.fly()
sparrow.fly()
pigeon.fly()
}
open class Bird { //open을 부모 클래스 앞에 적어주기
fun fly() {
println("새는 날아요~")
}
}
class Chicken : Bird() {
//@super 이나 override같은거 필요 없나...?
}
class Sparrow : Bird() {}
class Pigeon : Bird() {}
2. 부모클래스에서 생성자를 활용할 때 --> 자식클래스에서 객체 생성 시 전달해야 함
fun main() {
var bird = Bird("새")
var chicken = Chicken("닭")
var sparrow = Sparrow("참새")
var pigeon = Pigeon("비둘기")
bird.fly()
chicken.fly()
sparrow.fly()
pigeon.fly()
}
open class Bird(name:String) {
var name: String = ""
init {
// this는 현재 클래스의 상태변수
this.name = name
}
fun fly() {
println("${name} 날아요~")
}
}
class Chicken(name: String) : Bird(name) {}
class Sparrow(name: String) : Bird(name) {}
class Pigeon(name: String) : Bird(name) {}
open class Bird(var name: String, var wing: Int, var color: String){
fun fly() = println("$wing")
fun sing(vol: Int) = println("Sing vol: $vol")
}
주 생성자 사용 1
class Sparrow(name: String, wing: Int, color: String) : Bird(name, wing, color){
fun talk() = println("Hi")
}
주 생성자 사용 2
class Eagle(name: String, wing: Int, color: String,
var habit: String = "natural") : Bird(name, wing, color){
//var habit: String 만 해도 되나??@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
fun talk() = println("Hi")
}
부 생성자 사용
class Chicken : Bird {
val language: String
constructor(name: String,
wing: Int,
color: String,
language: String ) : super(name, wing, color) {
this.language = language
}
fun speak() = println("$language")
}
val bird1 = Bird("bird1", 2, "blue")
val sp1 = Sparrow("sp1", 2, "rainbow")
val ch1 = Chicken("ch1", 2, "brown", "english")
'언어 > Kotlin' 카테고리의 다른 글
[Kotlin 문법 종합] - 인터페이스, 추상 클래스 (0) | 2024.03.05 |
---|---|
[Kotlin 문법 종합] - 오버라이딩, 오버로딩 # 수정하기 (0) | 2024.03.05 |
[Kotlin 문법 종합] - 생성자, 객체 (#비교 추가하기) @@ 질문하기! (0) | 2024.03.05 |
[Kotlin 문법 종합] - 메소드, 클래스 (0) | 2024.03.05 |
[Kotlin 문법 종합] - 조건식, 반복문 (0) | 2024.03.05 |