继承的基类 去 Kotlin类的定义和静态方法和继承 这里看
1.创建Chicken鸡的抽象类 定义抽象方法callOut
package com.kotlin.study
/**
* 继承Animal 的name 和sex 不用 var 和val修饰 新增voice需要增加var 或val
*
*/
abstract class Chicken(name: String, sex: Int, var voice: String) : Animal(name, sex) {
//抽象方法必须在子类里面重写,所以可以省略open因为abstract默认就是open类型的
//open abstract fun callOut(times:Int):String
val numberArray: Array<String> = arrayOf("1","2","3","4","5")
abstract fun callOut(times: Int): String
}
2.Cock公鸡类实现自己的callOut方法
package com.kotlin.study
class Cock(name: String, sex: Int, voice: String) : Chicken(name, sex, voice) {
override fun callOut(times: Int): String {
var count = when {
times <= 0 -> 0
times >= 5 -> 2
else -> 1
}
return "$sexName$name${voice}叫了${numberArray[count]}声"
}
}
3.测试调用
package com.kotlin.study
fun main() {
var kk= Cock("坤坤",Animal.FEMALE,"咯咯咯")
println(kk.callOut(2))
}
//打印:
//初始化init Animal类
//坤坤:母
//母坤坤咯咯咯叫了2声