Kotlin从入门到发疯

Kotlin笔记(五)类

2017-06-28  本文已影响25人  小龙哥的开发日记

csdn: http://blog.csdn.net/w15321970103/article/details/72758284

类的声明与组成

class 类名  类头(指定其类型参数、主 构造函数等){
  ......
}

class Person constructor(firstName: String) {
}
//没有类头
class Person{}

//没有类头类体
class Person

类头

构造函数

class Person constructor(firstName: String) {
}
class Person(firstName: String) {
}
class Customer(name: String) {
    init {
        logger.info("Customer initialized with value ${name}")
    }
}

注意,主构造的参数可以在初始化块中使用。它们也可以在 类内声明的属性初始化器中使用

class Customer(name: String) {
    val customerKey = name.toUpperCase()
}
//与普通属性一样,主构造函数中声明的属性可以是 可变的(var)或只读的(val)。
class Person(val firstName: String, val lastName: String, var age: Int) {
    // ……
}
class Customer public @Inject constructor(name: String) { …… }

次构造函数

class Person {
    constructor(parent: Person) {
        parent.children.add(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 关键字。

上一篇 下一篇

猜你喜欢

热点阅读