简述
Kotlin 中的抽象类和接口与 Java 8 类似,同样用到abstract、interface关键字,与java7以及之前最大的不同就是Kotlin的接口是可以有实现的。
抽象类
抽象类的格式如下:
abstract class 抽象类名[(主构造函数)][: 继承父类和实现接口] {……}
例:声明一个抽象的Person类,一个主构造函数,一个name属性。
abstract class Person(val name : String) { }
注意:即使不用 open 关键字修饰,抽象类也是可以被继承的,想想也很容易明白,因为抽象类本来就是用来继承的,所以就可以省略open关键字。
接口
接口类的格式如下:
interface 接口类名[: 继承的接口] {……}
例:声明一个接口A,一个接口B,B继承A
interface A interface B : A
在Kotlin中的接口可以有自己的实现,例如:
interface KotlinInterface{ var prop:Int fun foo(prop:Int) fun bar(){ println("bar") } }
接口不可以有构造函数
编译器提示接口不能有构造函数,再看一张图:
接口继承
上面是我继承接口后编译器让我覆盖的结果,可以判断出:
Kotlin 接口中函数可以有默认实现,也可以没有
Kotlin 接口允许存在抽象变量
Kotlin 接口的属性只能是抽象的,因为子类必须实现
抽象类与接口就先学到这,有任何疑问请留言与我联系,下次学习可见性修饰符public、private等。进入下一章节