Kotlin学习笔记——基础语法篇之类和对象
类的构造
Kotlin类的写法
- Kotlin类的构造函数分为主构造函数和二级构造函数
- 主构造函数的特点——函数名为init,参数要写在类名后面(下面举例),一般用于初始化
- 如果要在java中调用kotlin的类,要在类名前面加上
@JvmOverloads
(让java能够识别默认参数),并且补充constructor
关键字 - 主构造函数的参数写在类名后,如果没有
@JvmOverloads
修饰,constructor
关键字可省略(不是指二级构造函数的constructor
,是类名后面的) - 二级构造函数用
constructor
关键字 - 二级构造函数的特点——可有可无,相互独立,如果有主构造函数,先调用主构造函数
例子
1 | class Animal (type:String = "动物", name:String) { |
类的成员
类的成员属性
观察上述代码,构造函数传入的参数和成员变量一一对应,对于这些变量,Kotlin提供简便写法,在参数名之前加上val
或var
例子
1 | class Animal (var type:String = "动物", var name:String) { |
伴生对象和静态属性
想要让类具有类似java中静态成员函数和静态成员变量,要用到伴生对象,相当于java中的static代码块儿
例子
1 | class Animal (var type:String = "动物", var name:String) { |
类的继承
在Kotlin中,默认情况下,类是不允许被继承的,成员函数也是不允许重写的,只有加上open
修饰符,被修饰的类才可以被继承,被修饰的函数才可以被重写,Kotlin的类和函数默认相当于java的final类和方法
Kotlin中的开放性修饰符
开放性修饰符 | 说明 |
---|---|
public | 对所有人开放,Kotlin的类、函数变量不加修饰全部都是public |
internal | 对于本模块开放 |
protected | 对于自己和子类开放 |
private | 私有,不能和open一起使用 |
抽象类
写法:
1 | abstract class demo() { |
接口
1 | interface interDemo { |
注意
- Kotlin不允许多继承,通过接口来间接实现多继承
- 抽象类不能定义对象
- kotlin允许在接口内部实现某个方法
- 接口内部的所有方法默认都是
open
类型默认是抽象的 - 继承的时候,基类的成员属性不用加
val
或var
几种特殊的类
嵌套类
注意
- 嵌套类就是在类里面再写一个类
- 普通的嵌套类不能访问外部类的数据
例子
1 | class outerClass(var otrName:String = "outer name") { |
内部类
- 可以访问外部类数据的嵌套类
1 | class outerClass(var otrName:String = "outer name") { |
枚举类和密封类
先不学
数据类
在类名前加上data
修饰
特点
- 这种类自动生成每个字段的get和set方法
- equals方法,比较每一个数据
- 提供copy方法,用于复制数据对象
- 提供toSting方法
注意
- 必须有主构造函数,且至少一个参数
- 输入参数前面必须要加
val
或var
- 数据类不能是基类,不能是子类,不能是抽象类,不能是内部类,不能是密封类
模板类
类名后面添加</*泛型列表*/>
,表示这是一个模板类
例子
1 | class MyArray<T> (var arr:Array<T>) { |
Kotlin学习笔记——基础语法篇之类和对象
https://jingtianer.github.io/home/2019/04/12/Kotlin-Android学习笔记/Kotlin学习笔记——基础语法篇之类和对象/