kotlin学习笔记(二)
来源:互联网 发布:vlookup查找相同数据 编辑:程序博客网 时间:2024/05/18 21:10
类和对象
一、类的声明
class Invoice {}
类的定义由以下几部分组成: 类名, 类头部(指定类的类型参数, 主构造器, 等等.), 以及由大括号括起的类主体部分. 类的头部和主体部分都是可选的; 如果类没有主体部分, 那么大括号也可以省略。
class Empty
二、构造函数
一个类可以有一个主构造器和一个或多个次构造器。主构造器是类头部的一部分, 位于类名称(以及可选的类型参数)之后。
1.主构造器
class Person constructor(firstName: String) {}
如果主构造器没有任何注解(annotation), 也没有任何可见度修饰符,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()}
实际上,在主构造器上声明和初始化属性有更加简洁的写法:
class Person(val firstName: String, val lastName: String) { // ...}
与通常的属性一样, 主构造器中定义的属性可以是可变的(var), 也可以是只读的(val)。
如果构造器有注解, 或者有可见度修饰符, 这时 constructor 关键字是必须的, 注解和修饰符要放在它之前:
class Customer public @Inject constructor(name: String) { ... }
2.次构造器
类也可以有二级构造函数,需要加前缀 constructor:
class Person { constructor(parent: Person) { }}
如果类有主构造函数,每个次构造函数都要,或直接或间接通过另一个次构造函数代理主构造函数。在同一个类中代理另一个构造函数使用 this 关键字:
class Person(val firstName: String, val lastName: String) { constructor(firstName,lastName,age):this(firstName,lastName){ }}
三、get和set方法
class Person { var lastName: String = "zhang" get() = field.toUpperCase() // 将变量赋值后转换为大写 set var no: Int = 100 get() = field // 后端变量 set(value) { if (value < 10) { field = value } else { field = -1 } } var heiht: Float = 145.4f private set}
Kotlin 中类不能有字段。提供了 Backing Fields(后端变量) 机制,备用字段使用field关键字声明,field 关键词只能用于属性的访问器
// 测试fun main(args: Array<String>) { var person: Person = Person() person.lastName = "wang" println("lastName:${person.lastName}") person.no = 9 println("no:${person.no}") person.no = 20 println("no:${person.no}")}
阅读全文
0 0
- kotlin学习笔记(二)
- kotlin学习笔记(二)
- Kotlin学习笔记(二)
- kotlin学习笔记(二)
- Kotlin学习笔记(二)---从零学习Kotlin
- Kotlin学习笔记(二):Kotlin与Java对比
- Kotlin学习笔记(二)循环,跳转
- Kotlin学习笔记(二)基本数据类型
- Kotlin学习笔记二(数据类型)
- kotlin学习(二)
- Kotlin学习(二)
- Kotlin学习笔记(二)——示例篇二
- Kotlin笔记二(Kotlin基础)
- Kotlin学习(二)Hello Kotlin
- Kotlin学习笔记(二)——示例篇一
- Kotlin学习笔记(二)——示例篇三
- Kotlin学习笔记(二)-类和对象
- Android Kotlin学习笔记(二)---环境搭建
- G711 编码 PCM (ALAW & ULAW)
- 库函数和底层系统调用
- PID源码讲解
- 胶水语言Python技术百问_从新手到进阶
- 【bzoj1503】 [NOI2004]郁闷的出纳员
- kotlin学习笔记(二)
- oracle数据库迁移
- android 如何保护我们的app(一)(干货)
- 【javascript】中国省市区号JSON格式数据--2017年为准,含省市名称和电话区号
- git命令
- linux下的gdb调试
- 云服务与云存储
- 金蝶EAS,ListUI或EditUI弹出文件选择窗口,获取文件路径
- easyui datagrid 加载慢的问题