Kotlin学历之抽象类与接口

简述

Kotlin 中的抽象类和接口与 Java 8 类似,同样用到abstractinterface关键字,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 接口中函数可以有默认实现,也可以没有
Kotlin 接口允许存在抽象变量
Kotlin 接口的属性只能是抽象的,因为子类必须实现

抽象类与接口就先学到这,有任何疑问请留言与我联系,下次学习可见性修饰符public、private等。进入下一章节