코딩;
2022. 1. 27. 03:44
예제1
Base class
open class Base(var firstname:String = "코니", val lastName:String = "김", var age:Int){
/*
class Base{
var firstname:String
val lastName:String
var age:Int
constructor(firstname:String, lastName:String, age:Int){
this.firstname = firstname
this.lastName = lastName
this.age = age
}
*/
open val fullName:String
get() = "$firstname $lastName"
}
주석처리된 부분이 축약되어 Base class의 생성자로 들어가면 이런 형태로 된다.
Child class가 상속을 받기 때문에 앞에 open을 붙여주는 것 잊지말도록 하자.
Base class를 상속받는 Child class
class Child(firstname:String, lastName:String, age:Int, var address:String) : Base(firstname, lastName, age){
override val fullName: String
get() = "$firstname $age $address"
}
코틀린에서 특이한 점은 상속시 클래스건 메소드건 상속받는 개체 앞에다 오버라이드를 붙여줘야 한다,
그리고 상속을 주는 개체 앞에 open을 붙여준다.
상속 적는 단계
먼저 이렇게 적어주고
class Child : Base(firstname, lastName, age)
이렇게 추가해준다
class Child(firstname:String, lastName:String, age:Int) : Base(firstname, lastName, age)
함수호출부
fun main(args: Array<String>) {
val base = Base("코돌", "양", 24)
base.firstname = "영춘"
println(base.fullName) // get
val child = Child("코스", "임", 38, "서울시")
println(child.lastName)
println(child.fullName)
}
예제2
Bird class
open class Bird(var name:String, var wing:Int, var color:String){
fun fly() = println("Fly wing: $wing")
override fun toString(): String {
return "Bird(name='$name', wing=$wing, color='$color')"
}
open fun allData() = print("$name $wing $color ")
}
Lark class
class Lark(name:String, wing:Int, color:String):Bird(name, wing, color){
fun singHitOne() = println("짹짹!")
}
Parrot class
class Parrot:Bird{
var vol:Int = 0
constructor(name:String, wing:Int, color:String, vol:Int):super(name, wing, color) {
this.vol = vol
}
override fun toString(): String {
return super.toString() + "Parrot(vol=$vol)"
}
override fun allData(){
super.allData()
println("$vol")
}
}
super → 상속받은 클래스의 데이터를 가져온다.
함수호출부
fun main(args: Array<String>) {
val parrot = Parrot("나이팅게일", 2, "blue", 8)
println(parrot.toString())
println(parrot.allData())
}
오버라이드 연습
// 오버라이드
class Calc{
fun add(x:Int, y:Int):Int = x + y
fun add(x:Double, y:Double):Double = x + y
fun add(x:Int, y:Int, z:Int):Int = x + y + z
fun add(x:Double, y:Double, z:Double):Double = x + y + z
}
fun main(args: Array<String>) {
val cal = Calc()
println(cal.add(3, 4))
println(cal.add(3.12, 4.34))
println(cal.add(3, 4, 5))
println(cal.add(3.12, 4.34, 5.67))
}