这里和java的思想是一样的,只是语法上有些区别,很简答, 这里只做一个例子:
- 父类定义成抽象类,告诉子类你必须严格实现
- 同样的在kotlin中,方法重载(overload)也是同方法名,不同参数
- 方法重写(override)用open
/**
* 父类 人类
* 定义成抽象类的作用:
* 1,有些方法在子类当中实现,在父类当中不需要实现,也就是不需要写方法体;
* 2,抽象类定义的是事物的本质
*/
abstract class Person {
var name:String=""//每个人都有名字
//构造方法接收名字
constructor(name:String){
this.name=name
}
//人类都是可以吃饭的
abstract fun eat():String
//人类都有自己的职业属性
abstract fun work(): String
//普通方法
open fun action(){
Log.e("sujd=====",name+work()+eat());
}
}
/**
* 接口定义的是事物的能力,不是所有的对象都有这样的能力
*/
interface SomeCan{
fun canPlay();
}
class Student(name: String,var work: String,var food: String) :Person(name),SomeCan {
override fun eat():String{
return work
}
override fun work(): String {
return food
}
override fun canPlay() {
Log.e("sujd=====",name+"会打电子游戏");
}
}
class CharacterActivity:Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var student=Student("小明","喜欢吃辣条","是学生")
student.action()
student.canPlay()
}
}