【2025最新版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 = 1
fun 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("我来自接口中的实现的方法")
}
}
整个kotlin教程源码项目结构图:
有问题或者完整教程源码的可以看简介联系我,也可以私信我,我每天都看私信的