[Android / Kotlin] 상속

영서·2023년 7월 7일
0

Kotlin Basics

목록 보기
3/5

1. 상속과 생성자

상속은 클래스를 선언할 때 다른 클래스를 참조해서 선언하는 것이다. 즉, 간단하게 말하면 클래스를 확장하는 개념이다.
따라서 상속 관계에서 상속 대상이 되는 클래스를 상위 클래스라고 하고, 상속 받는 클래스를 하위 클래스라고 한다.

  • 어떤 클래스를 상속받으려면 선언부에 콜론(:)과 함께 상속받을 크래스 이름을 입력해야함.
  • 다른 클래스에서 상속할 수 있게 하려면 open키워드 사용

클래스 상속 형식 예제

open class Super { // 상속할 수 있게 open 키워드 사용

}
class Sub: Super() { // Super를 상속받아 Sub 클래스 선언

}

매개변수가 있는 상위 클래스의 생성자 호출 예제

open class Super(name: String) { 

}
class Sub(name: Stirng): Super(name) { 

}

하위 클래스에 보조 생성자만 있는 경우 상위 클래스의 생성자 호출 예제

open class Super(name: String) { 

}
class Sub: Super { 
	constructor(name: String): super(name) {
    
    }
}

2. 오버라이딩

상위 클래스에 선언된 변수나 함수를 같은 이름으로 하위 클래스에서 다시 선언하는 것을 오버라이딩이라고 한다.

상속 관계인 Super클래스와 Sub클래스 예제

open class Super { 
	var superData = 10
    fun superFun() {
    	println("superData값: $superData")
    }
}
class Sub: Super() // 별도의 멤버를 선언하지 않고, Super 클래스를 상속받음.
fun main() { 
	val obj = Sub()
    obj.superData = 20
    obj.superFun()
}

변수도 오버라이딩 기법으로 재정의할 수 있지만 주로 함수를 재정의하는데 사용한다.
예를 들면, 상위 클래스인 Animal이 있고 Animal 클래스에는 cry()라는 함수가 있다고 가정해보자.
이때 이를 상속받는 Dog클래스와 Cat클래스에서 cry()라는 함수를 재정의(오버라이딩)하여 울음소리를 다르게 할 수 있다.
함수뿐만 아니라 변수도 open키워드와 override키워드를 사용해야 한다.

오버라이딩 예제

open class Animal(var name: String, var age: Int){
    open fun cry() { // 상속 허용하도록 open 키워드 사용
        println("울음 소리")
    }
}
class Dog(name: String, age: Int): Animal(name, age){
    override fun cry(){ // 재정의하도록 override 키워도 사용
        println("왈왈")
    }
}
class Cat(name: String, age: Int): Animal(name, age){
    override fun cry(){ // 재정의하도록 override 키워도 사용
        println("냐옹")
    }
}

Reference

Book: 깡샘의 안드로이드 프로그래밍 with 코틀린

profile
Let it rip

0개의 댓글