美文网首页
Kotlin学习(四)

Kotlin学习(四)

作者: digtal_ | 来源:发表于2018-10-17 14:58 被阅读7次

    对象表达式

    在设置点击事件的时候常常会用到匿名类部类,在kotlin中匿名类部类表示如下:

     bt.setOnClickListener(object : View.OnClickListener{
          override fun onClick(v: View?) {
             println("clcik1")
          }
     })
    
     bt.setOnClickListener {//lambda
         println("click2")
      }
    
     bt.setOnClickListener(View.OnClickListener {//lambda
        println("click3")
      })
    

    对象声明

    在Kotlin中不存在静态变量,对象声明用Objcet关键字表示

       object Constants{
            val name = "myname"
            var android = "ANDROID"
            val app = "App"
        }
    

    伴生对象

    一个类可以设置对象声明,在类的内部可以使用对象声明,使用companion关键字声明,这样的对象称为伴生对象。

        class MyClass{
            companion object {
                fun create():MyClass = MyClass()
            }
        }
    

    扩展函数

    要声明一个扩展函数,我们需要在函数的名称前加上一个接收者类型并且加上.符号

        fun MutableList<Int>.swap(index1: Int, index2: Int) {
            val tmp = this[index1] // this对应list
            this[index1] = this[index2]
            this[index2] = tmp
        }
    
        val l = mutableListOf(1, 2, 3)
        l.swap(0, 2) // 在 `swap()` 函数中 `this` 持有的值是 `l`
        println(l)
    

    This表达式

    在类的成员中,this表示当前类的对象,在扩展函数或带接收者的文本函数中,this在.的左边,表示接收者参数

    
        class C {
            //默认带有@C标签
            //this表示C
            val c = this
    
            inner class D {
               fun Int.m(){//默认带有@m标签
                   //表示C
                   val a = this@C
                   //表示D
                   val b = this
                   //表示D
                   val c = this@D
                   //
                   val d = this@m
               }
            }
    
        }
    

    修饰符

    Kotlin有四种可见性修饰符,分别是public,private,protected,internal,默认的修饰符是public,除了internal之外,其他三种修饰符与Java的访问权限一样,private修饰的属性是不会自动生成get和set方法的

    open class D{
            private val a = 1
    
            protected open val b = 2
    
            internal val c = 3
    
            val d = 4//默认为public final
    
        }
        class E :D(){
            override val  b =5//只有b能被重写
        }
    

    数据类

    Kotlin的惯用语法是有写POJO类,一般写那种类都是用data修饰的类,也就是数据类表示,只保存数据的类。

      data class User(val name: String, val age: Int)
      val user = User("zhan", 1)
      val copy = user.copy(age  =3)
    

    相关文章

      网友评论

          本文标题:Kotlin学习(四)

          本文链接:https://www.haomeiwen.com/subject/zyvlzftx.html