类、对象和‎接口‎ ‎

来源:kmgdwlc.com   作者:   发表时间:2020-02-15 20:21:02

声明了一个只有一个抽象方法的接口,和java中一样,实现这个接口的类要提供这个抽象方法的具体实现。

在kotlin中「:」相当于java中的extends或implements。

在接口中定义一个带方法体的方法

我们实现这个接口的类中要为click()方法提供实现。而对于showOff()方法则有些无所谓了,你可以直接调用,也可以重新定义。

kotlin中类和方法默认都是final的,如果想允许一个类有子类,那么需要用open修饰。

上面的这个click(){}函数是重写的,它默认是open,可以被RichButton的子类再次重写,如果我们不想让它重写了,那么可以用final修饰它。

如果没有给类声明任何构造方法,将会生成一个不带参数的默认构造方法。

这个类没有声明一个主构造方法,它声明的是两个从构造方法。

java中不可以声明抽象的成员变量,在kotlin中可以。

除了抽象属性声明外,接口还可以包含具有getter和setter属性

实现一个既可以存储值又可以在值被访问和修改时提供额外逻辑的属性。

声明一个具有private setter的属性

Kotlin 可以创建一个只包含数据的类,关键字为 data:

为了保证生成代码的一致性以及有意义,数据类需要满足以下条件:

以下实例中派生类 Derived 继承了接口 Base 所有方法,并且委托一个传入的 Base 类的对象来执行这些方法。

在 Derived 声明中,by 子句表示,将 b 保存在 Derived 的对象实例内部,而且编译器将会生成继承自 Base 接口的所有方法, 并将调用转发给 b

Kotlin 直接支持委托模式,更加优雅,简洁。Kotlin 通过关键字 by 实现委托

当对象声明在另一个类的内部时,这个对象并不能通过外部类的实例访问到该对象,而只能通过类名来访问,同样该对象也不能直接访问到外部类的方法和变量。

类内部的对象声明可以用 companion 关键字标记,这样它就与外部类关联在一起,我们就可以直接通过外部类访问到对象的内部元素。

编辑:

未经授权许可,不得转载或镜像
© Copyright © 1997-2019 by kmgdwlc.com all rights reserved