Android.Study

<Android>상속&오버라이딩

도슬 2023. 7. 17. 20:37

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 메소드() { 내용변경}