您的位置:首页 > 其它

Step into Kotlin - 14 - 继承

2015-07-16 09:40 253 查看
目录

继承
扩展类

重写方法

接口
定义接口

实现接口

多重实现

抽象类

摘要

继承类,重写方法,实现接口,指定实现的父类方法,抽象类

继承

扩展类

使用
:
符号

默认所有类都是
final
的,如果希望类能够被继承,需要声明为
open class


子类构造函数需要实现父类的构造函数

由于辅助构造器必须调用主构造器或其它辅助构造器,所以辅助构造器永远不可能直接访问父类的构造器

open class Person(name: String) {}
class Employee(name: String) : Person(name)  {}


重写方法

方法默认为
final
的,如果希望被重写需要声明为
open fun


final
修饰的方法无法被重写

重写方法时必须加上
override
关键字,
override
方法默认为
open


调用超类方法时也是使用
super
关键字

// 父类
open fun idf() {}
open fun idf2() {}
// 子类
override fun idf() {
super.idf()
}
// 无法被重写
final override fun idf2() {
super.idf2()
}


接口

接口类似 Java8,支持方法,抽象方法和抽象属性

接口及其中的方法默认是
open


定义接口

interface A {
val prop: Int

fun foo() {
}

fun bar()
}


实现接口

class B : A {
override fun bar() {
throw UnsupportedOperationException()
}

override val prop: Int
get() = throw UnsupportedOperationException()
}


多重实现

如果一个类需要实现的类或接口中包含有同名方法,可以使用
<>
来指明需要调用哪个父类方法

open class TextView : View, OnClickListener {

constructor(size: Int) : super(size)

// onClick must be overridden
override fun onClick() {
super<View>.onClick()   //  call to View.onClick()
super<OnClickListener>.onClick()
}
}


抽象类

抽象类类似接口,默认也是
open
的,但是必须使用关键字
abstract
显示声明抽象成员。

abstract class Shape {
abstract fun onClick()
}
class Rectangle : Shape(), OnClickListener {
// not required to override onClick
}


以上 Shape 为抽象类,所以需要调用默认构造方法
()
,而 OnClickListener 为接口,则不需要这样做。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: