코틀린 / 메소드 오버라이딩, 상속

(。◠ ◠。)·2022년 9월 5일

국비 개발 훈련 일기

목록 보기
31/35

코틀린
메소드 오버라이딩
확장함수
상속

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //스트링 확장함수테스트
        testStringExtension()

        var parent = Parent()
        parent.sayHello()
        var child = Child()
        child.sayHello()
        var childClass=ChildClass()
        childClass.opened()
        var whale =  Whale()
        whale.walk()
        whale.move()
        var bird =  Bird()
        bird.walk()
        bird.move()
    }
    //StringExtension테스트하기
    fun testStringExtension(){
        var original = "Hello"
        var added = "Guys~"
        Log.d("Extension","added를 더한 값은 ${original.add(added)}입니다")
    }
}
//String클레스 plus라는 확장함수 추가하기
//스트링 클레스에 사용자 정의 함수를 추가하는 문법
//원본스트링 클래슨느 변화가 없음
//지금 순간에만 추가가 됨
fun String.add(word:String):String{
//    string1+string2
    return this+word
}

open class Parent{
    var hello:String="안녕하세요."
    fun sayHello(){
        Log.d("Extension","${hello}")
    }
}

class Child:Parent(){
    fun myHello(){
        hello ="Hello"
        sayHello()
    }
}

//메소드 오버라이드
open class BaseClass{
    open fun opened(){
    }
    fun notOpend(){
    }
}

class ChildClass : BaseClass(){
    override fun opened(){
        Log.d("Extension","메소드오버라이드")
    }
//    부모클레스BaseClass에서 허가open를 안해줌.
//    override fun notOpend(){
//    }
}

abstract class Animal{
    fun walk(){
        Log.d("abstract","걷습니다")
    }
    abstract fun move()
}

class Whale : Animal(){
    override fun move() {
           Log.d("abstract","바다를 헤엄침")
    }
}

class Bird : Animal(){
    override fun move() {
        Log.d("abstract","날아요")
    }
}
profile
화이탱!

0개의 댓글