【2024最新版Kotlin教程】Kotlin第一行代码系列第五课-类继承,抽象类,接口
为什么要有继承呢,现实中也是有继承的,对吧,你继承你爸的遗产,比如你爸建好了一个房子,儿子继承爸,就得了一个房子,当然你还可以再建一个房子(新增方法),当然如果你爸允许你拆他房子(加open),你也可以拆掉他的,重建(重写方法)。
继承抽象类和接口同一用 “:”
一、类继承:
//父类,
//有open修饰:允许其他类继承
/*** 注意: 默认无open修饰:不允许其他类继承*/open class Parent {//父类中的一个方法//有open修饰:允许子类重写//无open修饰:不允许子类重写open fun action(){println("Parent action----------")}
}
//Child类继承自Parent类
class Child : Parent() {//子类重写了父类的action方法override fun action(){println("Child action----------")}
}fun main() {}
二、抽象类定义:
/*** 抽象类:定义在class前加abstract* 类是个模型了吧,就比如动物,有些是飞的,有些是走路的,有些是潜水的。* 就是把如何行走这个行为的再抽象出来,让它生成对象时自己决定(自己实现)** 注意:抽象类没法自己生成对象,它需要有子类* // 看了这个抽象类,我们来看下它的子类InheritDemo** BaseActivity*/
abstract class AbstractDemo(val name:String,var age:Int) {var sex:Int = 1fun eat(){println("我要吃东西")}//定义一个走抽象方法abstract fun walk()
}
三、接口的定义:
/*** 定义一个接口:关键字interface 不用加class** 注意:往往有些人分不清抽象类和接口的使用场景,感觉接口能做的,抽象类也能做,* 为什么还要接口呢。* 接口更像方法的抽象,它不归属于具体的类。它可以给没有任何联系的类* 如在Android开发中的OnClickListener接口,它可以给TextView,也可以给ImageView** 选学:因为有了高阶函数,高阶很大程度可以代替接口*/
interface InterfaceDemo {//没有实现的方法fun action()//实现了方法fun action2(){println("我是action2。")}
}
四、继承抽象类和接口:
/*** 继承了抽象类AbstractDemo和接口InterfaceDemo* 注意:子类的构造函数就不能加var或者val了,你父加了*/
class InheritDemo( name1:String, age:Int) : AbstractDemo(name1, age),InterfaceDemo {//实现了抽象类中的抽象方法override fun walk() {println("我来自抽象类中的抽象方法")}//实现了接口中的方法override fun action() {println("我来自接口中的action方法")}//重写了接口中的方法override fun action2() {super.action2()println("我来自接口中的实现的方法")}
}
有兴趣的也可以看视频教程:
【2024最新版Kotlin教程】Kotlin第一行代码系列第五课-类继承,抽象类,接口
整个kotlin教程源码项目结构图:
有问题或者需要整个源码学习的私信我