当我们继承类的时候,统一使用any这个超类,他是没有任何类型的,所有类都使用这个超类。
需要继承的方法需要加上open关键词,无论是类,还是函数。


open class name{
open val name_1:Int=123
open val name_2:String="测试"

//函数
open fun  name_main(){
    println(name_1)
}

}

//继承这个类,他需要采用:这个符号
class yu:name(){

}

fun main(){

yu().name_main()

}

main()


继承了name这个类,却没有其他代码构造,这就是继承的好处。
没有加上open关键词的方法,即使继承了那个类,依旧会无法使用,所以需要继承的方法务必加上open。
// 这里值得注意的是:Kotlin使用继承是使用:符号,而Java是使用extends关键字


这里加上之前文章的辅助构造类方法,constructor。
继承类有两个区别,一个是主构造函数,一个是辅助构造函数,也就是前文提过的constructor ,倘若需要继承这个函数,需要申明super这个关键字。
如:constructor(context: Context) : super(context)
后面的文章更新再说明这个,我的书明天就到了。
// 注意,final修饰符在编辑器中是灰色的,因为Kotlin中默认的类默认是final的
class A{} 等价于 final class A{}


// 这里使用final修饰符修饰该方法,禁止覆盖掉类A的foo()函数

final override fun foo(){}

如:final override fun name_tr(){

    println(name_2)
}


在文章的开头提到了多态这个特性,方法的重载其实主要体现在这个地方。即函数名相同,函数的参数不同的情况。这一点和Java是相同的


重写属性和重写方法其实大致是相同的,但是属性不能被重载。
重写属性即指:在基类中声明的属性,然后在其基类的实现类中重写该属性,该属性必须以override关键字修饰,并且其属性具有和基类中属性一样的类型。且可以重写该属性的值(Getter)
如:
override fun name_tr(){

    println("重载的主方法")
}

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!

重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

可以根据自己的需要来重写部分方法

最后修改:2021 年 04 月 07 日
如果觉得我的文章对你有用,请随意赞赏