从零开始的Kotlin之类和对象(二)

470 查看

从零开始系列:

属性(Property)和域(Field)

Kotlin中声明一个属性可以使用valvar关键字。var表示为可变属性,val表示为只读属性。

class Test {
    val x = 0;
    var y = 1.0f
}

自定义的 Getter && Setter

var name: String
        get() = name
        set(value) {
            "The name is $name"
        }

编译期常数值

如果属性值载编译期间就能确定,则可以使用const修饰符,将属性标记为编译器常数值,这类属性必须满足以下所有条件:

  • 必须是顶级属性,或者是一个object的成员

  • 值被初始化为String类型,或基本类型

  • 不存自定义的取值方法

object Test3 {
    const val TEXT: String = "Hello"
}

接口

Kotlin中的接口与Java8非常类似,接口中可以包含抽象方法的声明,也可以包含方法的实现。接口与抽象类的区别在于,接口不能存储状态数据,接口可以拥有属性,但这些x属性必须是抽象的,或者必须提供访问器的自定义实现。

接口使用interface关键字来定义:

interface Test2 {
    fun test1()
    fun test2(str: String): String {
        return "Hello $str"
    }
}

实现接口

类或者对象可以实现一个或多个接口:

object Test3 : Test2 {
    override fun test1() {
        print("Hellol")
    }
}

class Test4 : Test2 {
    override fun test1() {
        print("World")
    }
}

接口中的属性

接口中声明的属性要么是抽象的,要么提供访问器的自定义实现。