Kotlin 类与对象概要
类与对象
用class声明
可以像普通函数一样使用构造函数创建类。
1 | val site = Runoob() // Kotlin 中没有 new 关键字 |
要使用类中的属性直接用.
来引用即可。
主构造器,直接作为类头部的一部分,位于类名后。
1 | class Person constructor(firstName: String) {} |
如果没有特别的注解可以省略contstructor
的关键字。
如果构造器有注解,或者有可见度修饰符,这时constructor关键字是必须的,注解和修饰符要放在它之前。
getter和setter
默认会实现getter方法和setter方法,val不会有setter方法。
field指的就是存储在属性中的值。
field 关键词只能用于属性的访问器
示例:
1 | class Person { |
其中的get,set方法也都可以设置为public或者private。
class类中,如果属性不是在主构造器中定义的,必须有初始化,或者lateinit
属性。
lateinit
允许延迟初始化
init
初始化代码,允许放在初始代码段中。用init
关键字作为前缀
1 | class Person constructor(firstName: String) { |
次构造函数
次构造函数必须加前缀constructor
如果类有主构造函数,那么每个次构造函数必须直接或间接代理主构造函数,可以理解为继承。
例如:
1 | class Person(val name: String) { |
注意:在 JVM 虚拟机中,如果主构造函数的所有参数都有默认值,编译器会生成一个附加的无参的构造函数,这个构造函数会直接使用默认值。这使得 Kotlin 可以更简单的使用像 Jackson 或者 JPA 这样使用无参构造函数来创建类实例的库。
1 class Customer(val customerName: String = "")对象的属性必须用var或者val表明出来,当然它也可以简写在主构造器中,可以简单的表示出来。如果没用var或者val修饰,那么他只是一个普通的参数,而不是一个对象的属性。而且只有主构造器才可以这样直接声明属性,次构造器不允许这样子使用
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小贺同学的blog!
评论