9. 클래스의 상속

Yes. Dominos~·2021년 9월 12일
0

디모의 코틀린

목록 보기
9/10
post-thumbnail

이글은 유튜브 강좌 <디모의 코틀린> 강좌를 보고 요약작성한 글 입니다.
https://www.youtube.com/playlist?list=PLQdnHjXZyYadiw5aV3p6DwUdXV2bZuhlN
강좌를 보고 싶은 분은 위 링크를 통해 공부하실수 있습니다.


inheritance(상속) :
1. 상속받은 재산, 유산, 상속
2. (과거·선대로부터 물려받는) 유산, 유전(되는 것)

: 관련된 부모(상위개념)으로 무언가를 물려 받는 것.
'차두리'가 '차범근의 신체적 능력' 을 물려받은 것처럼... 그런느낌?

'상속'의 네이버 사전적 의미
https://en.dict.naver.com/#/entry/enko/1e1ab2e0ac314025a2a6020c31bdebfa

프로그래밍에서는 아래 처럼 부른다.
부모 = 수퍼 클래스
자식 = 서브 클래스

1. 자식은 A 속성을 부모로 부터 받고,
2. 자신만이 가지는 속성 B 를 생성하였다.



  • 코드로 먼저 동작을 확인해보기 전에 class, open class 에 대해 알고 가야 한다.

    class Car // 상속이 불가능
    open class Engine // '부모' 의 역할로 상속 가능

  • 서브클래스에서 상속에 관한 서브클래스의 2가지 규칙에 대해 알아야 한다.
    1. 수퍼 클래스(부모)에 존재하는 속성과 '같은 이름의 속성'을 가질수 없음
    2. 서브 클래스(자식)가 생성될때는, 반드시 수퍼 클래스(부모)의 생성자까지 호출되어야 함.


코드를 보면서 이해해보자.

open class Animal (var name:String, val age:Int, var type:String)
{
    fun introduce() {
        println("저는 ${type} ${name}이고 ${age}살 입니다.")
    }
}

class Dog (name:String, age:Int) : Animal (name, age, "개")
{
    
}
  • Animal클래스는 open class 화 하여 부모역할.
  • Animal클래스의 서브클래스(자식)인 Dog 클래스는 파라미터로 name, age 를 받아, 부모의 속성 그대로 사용.
    생성시 (name, age, "개") 으로 생성.
  • 여기서 알아야 할것

    파라미터 생성시 val, var 을 쓰면, 파라미터로 적용됨과 동시에 해당 클래스의 속성으로 만들어 진다.
    그러므로,,,
  1. 해당 클래스의 속성으로 사용할것 인지,
  2. 부모의 속성을 이용한 파라미터로만 사용할것 인지,
    고민하고 작성해야 한다.


  • 최종코드
fun main() {
	
    var a = Animal("별이",5,"개")
    var b = Dog("별이",5)
    
    a.introduce()
    b.introduce()
    
    b.bark()
    
    var c = Cat("루이",1)
    
    c.introduce()
    c.meow()
    
}

open class Animal (var name:String, val age:Int, var type:String)
{
    fun introduce() {
        println("저는 ${type} ${name}이고 ${age}살 입니다.")
    }
}

class Dog (name:String, age:Int) : Animal (name, age, "개")
{
	fun bark(){
        println("멍멍!!")
    }   
}

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

결과 :
저는 개 별이이고 5살 입니다.
저는 개 별이이고 5살 입니다.
멍멍!!
저는 고양이 루이이고 1살 입니다.
야옹야옹~~

다음은 '오버라이딩과 추상화' 에 대해 알아보겠음!!

profile
미래의 아들아~ 곧 만나러 갈게

0개의 댓글

관련 채용 정보