Kotlin/継承
継承
(超軽量化を望む方法もプロフェッショナルもそうである)
open class Car(engine: String, body: String){
fun drive(){
}
fun stop(){
}
}
class SuperCar(engine: String, body: String): Car(engine, body){
}
📌 に火をつける
open class Car(engine: String, body: String){
open fun drive(): String{
return "달린다."
}
fun stop(){
}
}
class SuperCar(engine: String, body: String): Car(){
override fun drive(): String{
val run = super.drive()
return "빨리 $run"
}
}
練習問題を引き継ぐ
Charactorクラス:親->攻撃と防御 SuperNight類:Charactorの子類を引き継ぐ SuperMonsterクラス:Charactorのサブクラス+ビットを継承
// 부모 클래스이므로 open 키워드 사용
open class Charactor(var hp: Int, val power: Int){
fun attack(charactor: Charactor, power: Int = this.power){
charactor.defense(power)
}
// SuperNight클래스에서 오버라이딩 하기 때문에 open 키워드 사용
open fun defense(damage: Int){
hp -= damage
if(hp > 0) println("${javaClass.simpleName}의 남은 체력 : $hp")
else println("사망했습니다.")
}
}
class SuperNight(hp: Int, power: Int): Charactor(hp, power){
val defensePower = 2
// 부모 클래스의 defense 오버라이딩
override fun defense(damage: Int) {
super.defense(damage - defensePower)
}
}
class SuperMonster(hp: Int, power: Int): Charactor(hp, power){
// SuperMonster의 추가 기능 bite
fun bite(charactor: Charactor){
super.attack(charactor, power + 2)
}
}
fun main(args: Array<String>){
val monster = SuperMonster(100, 10)
val night = SuperNight(200, 8)
monster.attack(night)
monster.bite(night)
}
クラス名の読み込み方法
if(hp > 0) println("${javaClass.simpleName}의 남은 체력 : $hp")
Reference
この問題について(Kotlin/継承), 我々は、より多くの情報をここで見つけました https://velog.io/@yellowsummer/Kotlin-상속テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol