alltolove 发表于 2017-11-18 10:01:01

kotlin编程基础之类和对象(一)

类其实就是一个模板,一般要把它变成对象才能使用,就是实体化。例如:
fun main(args: Array<String>) {
    class People
    val p=People()
    print(p)
}这里的class People就是建了一个人类的模板,下边People()就是给他实体化,然后再赋值给一个常量,这里输出一串没有任何意义的哈希值,输出为:Class_objectKt$main$People@5e2de80c
这个类如何使用呢,下面先给他加点属性:
fun main(args: Array<String>) {
    class People(var walk:String,var talk:String)
    val p=People("走路","说话")
    println(p.walk)
    println(p.talk)
}
把他实体化的时候同样也要初始化一下他的属性,如果在类里面已经初始化好了,也可以不初始化,如:fun main(args: Array<String>) {
    class People(var walk:String="走路",var talk:String="说话")
    var p=People()
    println(p.walk)
    println(p.talk)
}以上两种输出结果都一样,为:
走路
说话
类里面也可以有方法,其实就是类里面的函数,如:
fun main(args: Array<String>) {
    class People(var walk:String="走路",var talk:String="说话"){
      fun doHomework(){
            println("正在做家务")
      }
    }
    var p=People()
    p.doHomework()
}
输出结果为:
正在做家务
类也可以用于继承,比如聪明的电脑将来可以继承人类,人能干的活电脑也能干:
fun main(args: Array<String>) {
    open class People(var walk:String="走路",var talk:String="说话"){
      fun doHomework(){
            println("正在做家务")
      }
    }
    class SmartComputer:People()
    var p=SmartComputer()
    p.doHomework()
}
不过类默认是不允许继承的,你要在前面加一个open关键字。输出结果为:
正在做家务
继承后还可以重写原来类的方法,比如:
fun main(args: Array<String>) {
    open class People(var walk:String="走路",var talk:String="说话"){
      open fun doHomework(){
            println("正在做家务")
      }
    }
    class SmartComputer:People(){
      override fun doHomework(){
            println("我是电脑,我在帮主人做家务")
      }
    }
    var p=SmartComputer()
    p.doHomework()
}
被重写的那个方法也必须是open的才能被重写,输出结果为:
我是电脑,我在帮主人做家务
类跟函数一样,都可以使用泛型,如:
fun main (args: Array<String>) {
    open class People<T> (var walk:T,var talk:T){
      open fun doHomework(){
            println("正在做家务")
      }
    }

    var p=People<String>("走路","说话")
    var f=People<Int>(1,2)
    println(p.walk)
    println(f.walk)
}
这里创建了两个对象p和f他们可以实体化不同类型的属性,输出结果为:
走路
1
属性也可以在init代码块里初始化,如:fun main (args: Array<String>) {
    class People(a:Int=1){

      var b:Int?= null
      init {
            b=a
      }
    }
    println(People().b)
}
输出结果为:1
页: [1]
查看完整版本: kotlin编程基础之类和对象(一)