728x90
반응형
상속과 생성자
// 클래스 상속 형식
open class Super { // 상속할 수 있게 open 키워드 사용
}
class Sub: Super() { // Super를 상속받아 Sub 클래스 선언
}
// 매개변수가 있는 상위 클래스의 생성자 호출
open class Super(name: String) {
}
class Sub(name: String): Super(name) {
}
// 하위 클래스에 보조 생성자만 있는 경우 상위 클래스의 생성자 호출
open class Super(name: String) {
}
class Sub: Super {
constructor(name: String): super(name) {
}
}
오버라이딩 - 재정의
// 상속 관계인 두 클래스
open class Super {
var superData = 10
fun superFun() {
println("i am superFun : $superData")
}
}
class Sub: Super()
fun main() {
val obj = Sub()
obj.superData = 20
obj.superFun()
}
// 오버라이딩 예
open class Super {
open var someData = 10
open fun someFun() {
println("i am super class function : $someData")
}
}
class Sub: Super() {
override var someData = 20
override fun someFun() {
println("i am sub class function : $someData")
}
}
fun main() {
val obj = Sub()
obj.someFun()
}
접근 제한자
// 접근 제한자 사용 예
open class Super {
var publicData = 10
protected var protectedData = 20
private var privateData = 30
}
class Sub: Super() {
fun subFun() {
publicData++ // 성공
protectedData++ // 성공
privateData++ // 오류
}
}
fun main() {
val obj = Super()
obj.publicData++ // 성공
obj.protectedData++ // 오류
obj.privateData++ // 오류
}
728x90
반응형