假如你想用Kotlin——类与接口
前言
在日常开发中,类与接口可以说是很熟悉的点,在Kotlin的世界中,也是把所有的事物都看成对象。本篇将分享类与接口的知识,体验一下它们在Kotlin中特有的魅力。
开始
类
1.类的声明
类使用class关键字声明:
如果没有类体,则可以直接声明不带花括号的类
2.构造函数
Kotlin中有主构造函数和次构造函数,主构造函数如下,它是类头的一部分:
主构造函数不能包涵任何代码,它的初始化代码可放在以init开始的代码块中,它们会按照出现的顺序执行
主构造函数中,属性可以是可变的(var)或者只读的(val)
次构造函数需要由constructor开头:
次构造函数可以通过this关键字委托到同个类中的其他构造函数
init代码块是成为主构造函数中的一部分,即使没有定义主构造函数,init代码块也会在次构造函数之前执行
创建对象无需使用new
3.类的继承
在Kotlin中,所有的类都直接或者间接地继承Any,也相当于Java中的Object。要声明一个显示的超类,则需按以下格式:
此时的Person类需要加上open,open与final相反,它表示允许这个类被继承。
对于不同的构造函数,可以使用以下的方式
在kotlin中,需要显示标注(open)可覆盖成员和覆盖后的成员(ovveride)
属性覆盖也不例外
需要注意的一点就是var属性可以覆盖val,但是反过来则不行。
4.初始化顺序
在基类构造函数执行时,派生类声明或覆盖的属性都还没初始化。
5.调用超类成员
调用超类可以使用super关键字进行,例如:
6.调用外部类成员
如果一个类从它的不同的直接超类有相同成员,则需提供自己的实现。
7.抽象类
Kotlin中的抽象类与Java一样使用abstract修饰,但它可以修饰继承的open成员,使之成为抽象成员。
8.属性
9.getter与setter
10.幕后字段field
field只能使用在访问器里面
11.幕后属性
12.编译期常量
使用const修饰符标记为编译期常量,需要满足的要求:
位于顶层或者object中的成员
使用String或者原生类型
没有自定义的getter
13.延迟加载
接口
1.接口定义
2.接口实现
3.覆盖冲突
可见性修饰符
public:对任何地方可访问,如果没有指定可见修饰符,则默认为public
private:只能在声明它的文件中可见
internal:在相同的模块中可见
protected:不适用于顶层,在本类或者子类中可见
结语
类与接口的相关知识就分享到这里了,但是它们远不止这些,例如还有扩展、其他类型等等,关于类型后续文章会分享到。今天是周六,相信很多人都开始放年假了,Kotlin系列的文章在春节期间也将停更,在这里提前向大家拜个年。
领取专属 10元无门槛券
私享最新 技术干货