● 클래스의 상속: 클래스의 재사용을 위한 설계도구
※ 상속이 미리 만들어져 있는 클래스를 가져다 쓰는 개념이라면 익스텐션은 미리 만들어져 있는 클래스에 메서드를 추가하여 넣는 개념이다.
※ 생성자를 통해, 클래스 내부의 프로퍼티와 메소드를 사용한 것이라면 상속은 클래스 자체를 재사용하는 것이다. 자식 클래스는 부모 클래스의 맴버들을 자신의 것처럼 사용할 수 O
class Activity {
fun drawText()
fun draw()
fun showWindow()
// ...
}
class MainACtivity: Activity() {
fun onCreate(){
draw("새 그림") // 미리 만들어진 기능(draw)을 호출만으로 사용할 수 있습니다.
}
}
① 상속법
open class 상속될 부모 클래스 {
// 코드
}
class 자식 클래스: 부모 클래스() { // 부모클래스를 호출한다. 단, 인터페이스에서는 호출X
// 코드
}
② 생성자 파라미터가 있는 클래스의 상속
open class 부모 클래스(value: String) { // 지금 이 코드는 생성자 함수임. 앞에 클래스가 있을 것임.
// 코드
}
class 자식 클래스(value: String): 부모 클래스(value) { // 부모클래스에 값전달!
// 코드
}
class CustomView: View { // 부모 클래스명 다음 (괄호)를 생략했습니다.
constuctor(ctx: Context): super(ctx)
constructor(ctx: Context, attrs: AttributeSet): super(ctx, attrs)
}
③ 부모 클래스의 프로퍼티와 메서드 사용하기
open class Parent {
var hello: String = "안녕하세요"
fun sayHello(){
Log.d("inheritance", "${hello}")
}
}
class Child: Parent(){
fun myHello() {
hello = "Hello!"
sayHello()
}