Kotlin类和接口类

抽象类:当定义一个类,通常需要定义一些方法来描述该类的行为特征,但有时这些方法的实现方        式是无法确定的。因此可将其定义为抽象类。

              抽象类的关键字abstract关键字修饰。在定义抽象类时,包含抽象方法的类必须声明为抽象类,但抽象类可以不包含任何抽象方法。

接口:一个抽象类中的所有方法都是抽象的,则可以将这个类用另外一种方式来定义,接口。

接口可以说是一个特殊的抽象类,在定义接口时,需要interface关键字来声明。

(1)接口中的方法都是抽象的,不能实例化对象。

(2)当一个类实现接口时,如果这个类是抽象类,则实现接口中的部分方法即可,否则需要实现接口中的所有方法。

(3)一个类通过冒号(:)实现接口时,可以实现多个接口,被实现的多个接口之间要用逗号隔开。

嵌套类:Kotlin中的嵌套类是指可以嵌套在其他类中的类,该类不能访问外部类的成员,内部类指的是可以用inner标记以便能够访问外部类的成员。

内部类:Kotlin中提供了内部类,内部类只需要在嵌套类的基础上添加一个“inner”关键字即可,将其标识为内部类。一个类前面加上inner关键字就变成了内部类,就可以访问外部类中的字段

Java中的嵌套类和内部类与Kotlin中的区别:

(1)在Java中,将一个类定义在另一个类的内部,则称这个类为成员内部类,如果成员内部类加上static修饰,则是称为静态内部类。Java中成员内部类中可以访问外部类的所有成员。

(2)在Kotlin中,将一个类定义在另一个类的内部,不加任何修饰符,则这个类将被默认为是一个嵌套类,如果加上inner修饰,则是一个内部类。Kotlin中的内部类可以访问外部类中的变量,而嵌套类却不可以访问。

枚举类:枚举顾名思义就是“例举”。每个枚举常量都是一个对象,枚举常量用逗号隔开,枚举类前面用enum关键字修饰,枚举支持构造函数

密封类:用于表示受限制的类层次结构,当一个值只能在一个集合中取值,而不能取其他值,此时可以使用密封类。密封类必须用sealed关键字来修饰。密封类的构造函数是私有的,因此密封类的子类只能定义在密封类的内部或者同一个文件。

数据类:Kotlin中专门处理这些数据的类被称为数据类,用关键字data进行标记

1、数据类中的主构造函数中传递的参数必须用val或var来修饰。

2、数据类不可以用abstract、open、sealed或inner关键字来修饰。

3、在Kotlin 1.1版本之前数据类只能实现接口,1.1版本之后数据类可以继承其他类。

4、编译器可以自动生成一些常用方法,如equals()、hashCode()、toString()、componentN()、copy()等,这些方法也可以进行自定义。

单例模式:Kotlin中,单例模式是通过object关键字来完成的,通过object修饰的类即为单例类,单例类在程序中有且仅有一个实例。

伴生对象:在kotlin中没有静态变量,因此它使用了伴生对象来替代Java中的静态变量的作用。

Kotlin中,定义伴生对象是通过“companion”关键字标识的

(1)有名称:调用方式为“类名.伴生对象名.成员名”或“类名.成员名”。

(2)无名称:调用方式为“类名.Companion.成员名”或“类名.成员名”。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伟、。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值