<Android>상속&오버라이딩
fun main() {
var bird = Bird("새")
var chicken = Chicken("닭")
bird.fly()
chicken.fly()
}
open class Bird(name:String) { //1. 상속 : Bird에서 상속받기위해 클래스 앞에 open
var name: String = ""
init {
// this는 현재 클래스의 상태변수를 의미합니다
// var name: String = ""
this.name = name //4. 치킨클래스에서 받은 name을 다시 name에받는다.
}
open fun fly() { //2. fly 메소드를 오버라이딩하기위해서 앞에 open을 적어준다.
println("${name} 날아요~") //5. 다시받은 name과 함꼐 출력한다.
}
}
class Chicken(name: String) : Bird(name) { //3. 부모 객체에 name을 넘겨주고
override fun fly(){ //6. fly함수를 오버라이딩해서 내용을 변경해준다. (소괄호내부에 아무것도 없으면 추상메소드)
println("${age}살의 ${name}가 날아봅니다~ 꼬끼오!")
}
}
>>
1. 닭을 받으면 Chicken클래스에서 닭을받고 Bird클래스에 닭을 넘겨주고
Bird클래스의 this.name에서 닭을 받아서 다시 name에 넘겨주고
var name에서 닭을 받는다.
그래고 fly()메소드에서 ${name}에 닭을 받아서
닭 날아요 라고 출력된다.
2. 오버라이딩 할 메소드를 부모객체에서 선택하고 해당 메소드 앞에 open을 달아주고
override 메소드() { 내용변경}