기존에 존재하는 클래스로부터 새로운 클래스를 생성할 수 있도록 함
open class BasePerson(_name: String, _age: Int) {
val name: String = `_name`
val age: Int = _age
fun talk() {
println("이름은 $name, 나이는 $age")
}
}
class MathTeacher(name: String, age: Int): BasePerson(name, age) {
fun teachMath() {
println("Teach Math.")
}
}
fun main(args: Array<String>) {
val person1 = MathTeacher("Cane", 30)
person1.talk()
person1.teachMath()
}
안녕하세요. 제 이름은 Cane 이고, 30 입니다.
Teach Math.
open class Person(name: String, age: Int) {
init{
println("Person $name, $age.")
}
}
class BaseBallPlayer(name: String, age: Int, club: String) : Person(name, age) {
init {
println("Baseball player name: $name, age: $age and club: $club.")
}
fun playBaseball() {
println("Play Baseball.")
}
}
fun main(args: Array<String>){
val person1 = BaseBallPlayer("ksh", 31, "doosan")
person1.playBaseball()
}
open class Person {
var name: String = ""
var age: Int = 0
constructor(_name: String){
this.name = name
println("Person $name $age")
}
constructor(_name: String, _age: Int){
this.name = _name
this.age = _age
println("Person $name $age")
}
}
class BaseballPlayer : Person {
constructor(_name: String) : this(_name, 10){
}
constructor(_name: String, _age: Int) : super(_name, _age) {
}
fun playBaseball() {
println("Doosan Bears")
}
}
fun main(arge: Array<String>) {
val person1 = BaseballPlayer("ksh")
val person2= BaseballPlayer("ksh", 31)
}
class BaseballPlayer : Person {
// 이름만 받는 보조 생성자, 나이를 기본값 10으로 설정
constructor(_name: String) : this(_name, 10) {
// 이 생성자는 별도의 본문이 없음
}
// 이름과 나이를 받는 보조 생성자
constructor(_name: String, _age: Int) : super(_name, _age) {
// 초기화 로직이 있다면 여기에 작성
}
}
this(*name, 10)
: 생성자 위임 호출. 같은 클래스 BaseballPlayer
의 다른 생성자를 매개변수 _name
과 10
을 사용하여 호출하라고 지시한다.*
무한 재귀 호출 오류
class BaseballPlayer : Person {
constructor(_name: String) : this(_name) {
println("첫번째 생성자")
}
constructor(_name: String, _age: Int) : super(_name, _age) {
println("두번째 생성자")
}
fun playBaseball() {
println("Doosan Bears")
}
}