alltolove 发表于 2017-11-20 07:41:59

kotlin编程基础之类与对象(三)

陪伴对象也可以加个名字,例如:fun main(args: Array<String>) {
    O.Orientation.left()
    O.left()
}

class O{
    companion object Orientation{
      fun left(){
            println("Take a left")
      }
    }
}
使用两种方式调用都可以,输出结果为:
Take a left
Take a left

陪伴对象还可以有扩展方法:
fun main(args: Array<String>) {
    fun O.Orientation.right(){
      println("Take a right")
    }
    O.right()
}

class O{
    companion object Orientation{
      fun left(){
            println("Take a left")
      }
    }
}
就是在外面自己定义一个方法,在普通函数跟类的普通方法也可以这么做,我就不举例了。输出结果为:
Take a right

下面介绍下不创建类直接创建对象的方法:
fun main(args: Array<String>) {
   A.a()
}
object A{
    fun a(){
      print("我只是个对象")
    }
}
这也称作单例,创建了直接使用就可以了,非常方便,输出结果为:
我只是个对象

还有一种类的形式叫数据类:
fun main(args: Array<String>) {
   var o=Orientation("left","right","front","behind")
    print(o)
}
data class Orientation(val left:String,val right:String,val front:String,val behind:String)

其实就是专门存储临时数据用的,有点像javabean,输出结果:
Orientation(left=left, right=right, front=front, behind=behind)
还有一种叫枚举类:
fun main(args: Array<String>) {
   var o= Orientation.LEFT
    when(o){
      Orientation.LEFT-> print("我在左边")
      Orientation.RIGHT-> print("我在右边")
      Orientation.FRONT-> print("我在前边")
      Orientation.BEHIND-> print("我在后边")
    }
}
enum class Orientation{
    LEFT,RIGHT,FRONT,BEHIND
}
有了这种简便的方法,你就可以通过改变o的值来制作流程,输出结果为:
我在左边

还有一种内部类的写法:
fun main(args: Array<String>) {
   val a=Outer().Inner().getA()
    print(a)
}
class Outer{
    val a=1
    inner class Inner{
      fun getA():Int{
            return a
      }
    }
}
使用内部类可以直接访问外部类的属性,输出结果为:1
页: [1]
查看完整版本: kotlin编程基础之类与对象(三)