컴퓨터 언어/코틀린

[Kotlin] 코틀린 클래스 2 상속 & 기능 확장

훈츠 2020. 2. 13. 17:40
반응형

안녕하세요. 훈츠 입니다. 오늘은 코틀린 클래스 1편에 이어 2편을 이어갈 예정인데요. 아직 클래스에 대해 감이 없으신분들은 다음 글을 한번 읽어보시는게 도움이 될것 같습니다. 이번 시간에는 코틀린에서 어떻게 상속 가능하게 만들고 상속할수 있는지 설명 드리겠습니다. 

https://rain2002kr.tistory.com/72

 

[Kotlin] 코틀린 클래스 1

안녕하세요. 훈츠 입니다. 이번 시간에는 객체 지향에서 이야기 하는 클래스에 대해 이야기 해보려고 합니다. 사실 코틀린은 객체 지향 언어 + 함수형 언어의 장점을 흡수한 언어 입니다. 그럼 코틀린에서는 어떤..

rain2002kr.tistory.com

상속 (inheritance)

상속이 필요한 경우와 상속에 관한 내용을 정리 해보자면 다음과 같습니다. 적절한 상속은 코드를 효율적으로 만들지만, 무분별한 상속은 코드를 더욱 어렵게 만들수도 있습니다. 

  • 이미 존재하는 클래스에 추가적인 기능을 추가해서 만드는 경우 입니다. 
  • 이미 존재하는 클래스의 공통점을 뽑아 만드는 경우 입니다. 
  • 서브클래스는 수퍼클래스 존재하는 속성과 같은 이름의 속성을 가질수 없습니다. 
  • 서브클래스는 수퍼클래스의 생성자 까지 호출해야 합니다. 

 

fun main() {
    var a = Dog("뽀돌이",3)
    a.introduce()
    a.bark()
    var b = Cat("야옹이",1)
    b.introduce()
    b.meow()
}



open class Animal (val name:String, val age:Int, val type:String){

    fun introduce() {
        println ("저는 ${type} ${name}이고, ${age}살 입니다.")
    }
}
//Animal 클래스 상속 시 속성 값 지정 확인 
//새로운 클래스의 생성자에 var 를 붙이지 말아아햠.
class Dog( name : String, age : Int ): Animal( name, age, "개"){
    fun bark(){
        println("왈왈")
    }
}

class Cat (name: String, age: Int): Animal(name,age,"고양이"){
    fun meow(){
        println("야옹야옹")
    }
    
}

//출력 코드
저는 개 뽀돌이이고, 3살 입니다.
왈왈
저는 고양이 야옹이이고, 1살 입니다.
야옹야옹

Animal 클래스를 상속 한 도그 클래스에서는 introduce 함수도 사용 할수 있고, Dog만의 bark() 함수도 구현 할수 있습니다. Cat 클래스 역시 introduce() 함수를 이용 할수 있는 것 처럼, 이미 존재하는 클래스에 추가적 기능을 추가 해서 새로운 클래스를 만들어 보았습니다. 

반응형