首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

假如你想用Kotlin——类与接口

假如你想用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系列的文章在春节期间也将停更,在这里提前向大家拜个年。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190202G06URS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券