前提:如果你是一个java程序员,那么你学起来kotlin的继承、接口和多态是非常容易理解的和java非常相似,但又比java的简单、好理解。
继承:子类可以继承父类的属性和方法
1.第一个案例
创建一个Father类
/**
* 父亲类
*/
open class Father {
var chartor:String = "性格内向"
open fun action(){
println("公共场合大声喧哗")
}
}
创建一个Son类继承Father类
/**
* 孩子类
*/
class Son :Father() {
override fun action() {
println("儿子很乖,公共场合不会大声说话")
}
}
然后再main中创建对象,调用
fun main(args:Array<String>) {
var son1 = Son();
println(son1.chartor)
son1.action()
}
2.抽象类的继承
创建一个Human抽象类
abstract class Human (var name:String){
abstract fun eat();
abstract fun pee();
}
创建一个Man类继承Human类,并实现里面的方法
class Man(name:String):Human(name) {
override fun eat() {
println("${name}大口吃")
}
override fun pee() {
println("${name}站着撒尿");
}
}
创建一个Woman类继承Human类,并实现里面的方法
class Woman(name:String):Human(name) {
override fun eat() {
println("${name}小口吃")
}
override fun pee() {
println("${name}蹲着撒尿");
}
}
在main中创建对象,调用
fun main(args: Array<String>) {
var woman = Woman("小红")
var man = Man("小明")
var manList = listOf<Human>(woman,man);
for (m in manList){
m.pee()
}
}
接口和多态:可以实现接口的方法
创建一个Human类
abstract class Human{
abstract fun eat()
}
创建一个IMan接口
interface IMan {
fun xiaodidi()
}
创建一个Man类实现Iman的接口和继承Human类
class Man:Human(),IMan{
override fun xiaodidi(){
println("站着尿尿")
}
override fun eat() {
println("吃东西")
}
}
创建一个TaiJian类继承Human类,不实现Iman的接口(你懂的)
class TaiJian:Human() {
override fun eat() {
println("吃皇上赏的")
}
}
在Main中创建对象,并调用
fun main(args: Array<String>) {
var person01 = Man()
person01.xiaodidi()
person01.eat()
var person02 = TaiJian()
person02.eat()
var house = listOf<Human>(person01, person02)
for (p in house){
if (p is Man){
p.xiaodidi()
p.eat()
}
if (p is TaiJian){
p.eat()
}
}
}
结束。