Kotlin学习4.4:类的继承
类的继承
在Kotlin中,类的继承是指在一个现有类的基础上构建一个新类,构建出来的新类被称作子类,现有类被称为父类,子类会自动拥有父类所有可继承的属性和方法。
在程序中如果想声明一个类继承另一个类,则需要使用英文冒号 “:”, 由于所有类都默认使用关键字 final 修饰,不能被继承,因此,当继承某个类时,需要在这个类的前面加上关键字 open。
示例代码如下。
open class Father(){ fun sayHello(){ println("Hello") } } class Son : Father(){ } fun main(args: Array<String>) { var son = Son() son.sayHello() }
方法重写
在Kotlin程序中,经常会用到类的继承,子类继承父类时会自动继承父类中定义的方法或属性,但有时在子类中需要对继承的方法或属性进行一些修改,这个过程被称为方法或属性的重写。
方法和属性的重写需要注意以下三点:
(1) 在子类中重写的方法与在父类中被重写的方法,必须具有相同的方法名,参数列表,以及返回值类型,并且被重写的方法前边需要使用关键字 override 表示。
(2) 在子类中重写的属性与在父类中被重写的属性必须具有相同的名称和类型,并且被重写的属性前边也需要使用关键字 override 表示。
(3) 在分类中需要被重写的属性和方法,前面必须使用关键字 override 来修饰。
示例代码如下:
open class Father(){ open var name = "wanku" open var age = 35 open fun sayHello(){ println("Fathers name is $name ,his age is $age .") } } class Son : Father(){ override var name = "wanku_son" override var age = 18 override fun sayHello(){ println("Sons name is $name ,his age is $age .") } } fun main(args: Array<String>) { var father = Father() father.sayHello() var son = Son() son.sayHello() }
super关键字
在上一小节中,当子类重写父类的方法后,子类对象将无法访问父类被重写的方法,为了解决这个问题,专门提供了一个关键字 super 用于访问父类的成员。
例如访问父类的成员变量、成员函数等。
使用关键字 super 调用父类的成员变量和成员方法的语法格式如下:
super.成员变量 super.成员方法([形参1,形参2···])
接下来在上面的基础上进行改写。通过关键字 super 访问父类成员变量和成员方法,示例代码如下:
open class Father(){ open var name = "wanku" open var age = 35 open fun sayHello(){ println("Fathers name is $name ,his age is $age .") } } class Son : Father(){ override var name = "wanku_son" override var age = 18 override fun sayHello(){ super.sayHello() println("Sons name is $name ,his age is $age .") } } fun main(args: Array<String>) { var son = Son() son.sayHello() }
博客为个人收集学习,供大家交流学习。 参考书籍:《Kotlin从基础到实践》