Kotlin笔记(六)类
来源:互联网 发布:qc归属地 数据库 编辑:程序博客网 时间:2024/06/02 04:16
类的声明与组成
Kotlin类声明由类名、类头(指定其类型参数、主 构造函数等)和由大括号包围的类体构成。
类头和类体都是可选的;
如果一个类没有类体,可以省略花括号。
class 类名 类头(指定其类型参数、主 构造函数等){ ......}class Person constructor(firstName: String) {}//没有类头class Person{}//没有类头类体class Person
类头
构造函数
- 在 Kotlin 中的一个类可以有一个主构造函数和一个或多个次构造函数。
- 主 构造函数是类头的一部分
- 它跟在类名和可选的类型参数后
class Person constructor(firstName: String) {}
- 如果主构造函数没有任何注解或者可见性修饰符,可以省略这个 constructor 关键字。
class Person(firstName: String) {}
- 初始化的代码可以放 到以 init 关键字作为前缀的初始化块中:
class Customer(name: String) { init { logger.info("Customer initialized with value ${name}") }}
注意,主构造的参数可以在初始化块中使用。它们也可以在 类内声明的属性初始化器中使用
class Customer(name: String) { val customerKey = name.toUpperCase()}
- 事实上,声明属性以及从主构造函数初始化属性,Kotlin 有简洁的语法:
//与普通属性一样,主构造函数中声明的属性可以是 可变的(var)或只读的(val)。class Person(val firstName: String, val lastName: String, var age: Int) { // ……}
- 如果构造函数有注解或可见性修饰符,这个 constructor 关键字是必需的,并且 这些修饰符在它前面:
class Customer public @Inject constructor(name: String) { …… }
次构造函数
- 类也可以声明前缀有 constructor的次构造函数:
class Person { constructor(parent: Person) { parent.children.add(this) }}
- 如果类有一个主构造函数,每个次构造函数需要委托给主构造函数, 可以直接委托或者通过别的次构造函数间接委托。委托到同一个类的另一个构造函数 用 this 关键字即可:
class Person(val name: String) { constructor(name: String, parent: Person) : this(name) { parent.children.add(this) }}class Person2{ constructor(name: String) { } constructor(name: String, age: Int) : this(name) { }}
如果一个非抽象类没有声明任何构造函数,它会有一个生成的 不带参数的主构造函数。构造函数的可见性是 public。如果你不希望你的类 有一个公有构造函数,你需要声明一个带有非默认可见性的空的主构造函数:
class DontCreateMe private constructor () {}
注意:在 JVM 上,如果主构造函数的所有的参数都有默认值,编译器会生成 一个额外的无参构造函数,它将使用默认值。这使得 Kotlin 更易于使用像 Jackson 或者 JPA 这样的通过无参构造函数创建类的实例的库。
要创建一个类的实例,我们就像普通函数一样调用构造函数:
class Customer(val customerName: String = "")val invoice = Invoice()val customer = Customer("Joe Smith")
注意 Kotlin 并没有 new 关键字。
阅读全文
0 0
- Kotlin笔记(六)类
- kotlin学习笔记(六)
- Kotlin学习笔记(六)扩展
- Kotlin笔记(六)——属性
- Kotlin语法(六)-类和继承
- Kotlin语法(六)
- Kotlin学习笔记(三)---Kotlin密封类
- Kotlin for Android(六)Kotlin类的继承和接口
- Kotlin(六)
- Kotlin笔记(一)
- Kotlin笔记二(Kotlin基础)
- Kotlin学习-类和对象(六)
- Kotlin入坑(六)函数
- Kotlin基础(六)接口、泛型
- 学习Kotlin笔记记录。--------类
- Kotlin学习笔记(一)
- kotlin学习笔记(二)
- kotlin学习笔记(三)
- 抠图+修图+调色+合成+特效Photoshop核心应用5项修炼pdf
- 创建型模式之原型模式实现
- 自学Java之Java语言(异常、断言和线程)(007day)
- 快速幂
- php 表单令牌防止重复提交原理
- Kotlin笔记(六)类
- 通过配置文件方式配置数据库的隔离级别
- csu:1947: 突然的灵光 +csu:1952: 地下情报员 (中位数)
- 求一个数组,n个元素的不同组合(排列组合问题)
- 搜索二叉树的实现
- 《OpenCV Computer Vision with Python》pdf
- Nginx 读书摘抄
- openfire集成外部用户表
- 计蒜客第六场 微软大楼设计方案(困难)