alltolove 发表于 2017-11-21 06:24:25

kotlin基础之类与对象(四)

类的属性也可以像java一样有geter和seter,其实就是一种在类里设置属性如何设置和获取的方式如:
class City{
    var name:String=""
      get() {
            return field
      }
      set(value) {
            if (value.isNotBlank()){
                field=value
            }
      }
    var population:Int=100_000_000
}

fun main(args: Array<String>) {
    var a=City()
    a.name="Japan"
    a.name=" berlin   "
    println(a.name)
}
这里面field就是指name,输出结果为:
berlin
还有一种接口类:
interface Animal{
    fun scream():String
}
interface Move{
    fun run()
}
class Dog():Animal,Move{
    override fun scream():String{
      return "汪汪"
    }

    override fun run() {
      println("狗在跑")
    }
}

fun main(args: Array<String>) {
    Dog().run()
    print(Dog().scream())
}
这是Dog继承了两个接口,必须实现每个接口里的方法才行。接口不允许有构造器,输出结果为:
狗在跑
汪汪

还有一种叫抽象类,跟接口差不多,就是他能有构造器:
interface Animal{
    fun scream():String
}
interface Move{
    fun run()
}
class Dog():Animal,Move,Drink(){
    override fun scream():String{
      return "汪汪"
    }

    override fun run() {
      println("狗在跑")
    }
    override fun drink(){
      println("Drink"+water)
    }
}
abstract class Drink(var water:String="water"){
    abstract fun drink()
}
fun main(args: Array<String>) {
    Dog().drink()
}
抽象类里如果想要复写的方法必须加上abstract关键字,输出结果为:
Drinkwater
页: [1]
查看完整版本: kotlin基础之类与对象(四)