kotlin-第三章(类与对象)

2020-11-20  本文已影响0人  JuliusL

09:kotlin的构造函数

kotlin的类默认是public final的,如果想去final,则需在class前加open关键字

class MainActivity : AppCompatActivity()

class MainActivity : AppCompatActivity(),View.OnClickListener

接口和父类无先后关系,父类后显示的写小括号表示,调用父类无参的构造方法。
如果MainActivity中没有实现构造方法,父类后的小括号可以省略

//跟在类名后面的是主构造函数
class AActivity(var int :Int) : AppCompatActivity(){
    //init是主构造函数的代码块
    init {
        println("主构造函数的代码块")
    }
    //这是次构造函数
    constructor()
}

10:伴生对象

【internal】访问修饰符

kotlin除了有private,protected,public还有一个internal

只能同个模块(Module)下访问。

伴生对象compaion object

class StringUtils {
    companion object {
        fun isEmpty(str: String): Boolean {
            return "" == str
        }
    }
}

fun main() {
    //kotlin code
    StringUtils.isEmpty("")
    //java code
    StringUtils.Companion.isEmpty("")
}
用伴生对象声明单例
class Single private constructor() {
    companion object {
        fun get(): Single {
            return Holder.instance
        }
    }
    private object Holder{
        val instance = Single()
    }
}

fun main() {
    Single.get()
}

11:by关键字的作用

动态代理
interface Animal{
    fun bark()
}

class Dog : Animal{
    override fun bark() {
        println("wang")
    }
}

class Zoo(animal:Animal):Animal by animal

fun main() {
    Zoo(Dog()).bark()
}

kotlin会将动态代理编译后变为静态代理,所以比java的动态代理效率高,java的动态代理本质上是通过反射,而kotlin动态代理本质上是通过静态代理去调用的。

数据类
枚举类
密闭类
上一篇下一篇

猜你喜欢

热点阅读