Kotlin学习笔记:类声明、修饰符、伴生对象,替代static、单例模式…

2019-05-1021:25:50APP与小程序开发Comments2,812 views字数 1474阅读模式

一、Kotlin类声明:

​​​class MainActivity : AppCompatActivity()文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/12062.html

class MainActivity : AppCompatActivity(), OnClickListener文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/12062.html

Kotlin的类默认都是public final的,如果不需要final修饰符,可以手动在class前添加open修饰符文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/12062.html

open class MainActivity : AppCompatActivity()文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/12062.html

open class MainActivity : AppCompatActivity(), OnClickListener文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/12062.html

二、

Kotlin修饰符:

private 、protected 、 public跟java的相同。
internal 是kotlin特有的修饰符,只有同个模块(Module)的类才可以访问,其他模块的则不能访问文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/12062.html

三、Kotlin伴生对象,替代static

public class StringUtils {
    public static boolean isEmpty(String string){
        return "".equals(string);
    }
}

在Java中我们常看到上述写法,但是在kotlin中却不行,因为kotlin中没有static修饰符,有两种方法可以替代,一是jvm static注释的方法,第二种就是用伴生对象替代,如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/12062.html

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

companion object要写在一个类的内部,作为这个类的伴生对象存在。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/12062.html

四、Kotlin单例模式:

class Singleton private constructor() {
    companion object {
        fun getInstance(): Singleton {
            return Holder.instance
        }
    }

    private object Holder {
        val instance = Singleton()
    }
}

五、Kotlin动态代理:

/**
 * 动态代理
 */

    interface Animal{
        fun bark()
    }

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

    class Zoo(animal: Animal) : Animal by animal

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

kotlin会动态代理在编译时转为静态代理去调用,所以kotlin的动态代理一定比java的动态代理的效率高。因为java的动态代理是通过一系列反射实现的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/12062.html

六、Kotlin循环:

    for (i in 1..10){
        println(i)
    }
    //结果:打印1到10

    for (i in 1 until  10){
        println(i)
    }
    //结果:打印1到9

    for (i in 10 downTo 1){
        println(i)
    }
    //结果:打印10到1

    for (i in 1..10 step 2){
        println(i)
    }
    //结果:打印1,3,5,7,9

    repeat(10){
        println(it)
    }
    //结果:打印0到9


    val list: ArrayList<String> = arrayListOf("a", "b", "c", "d")

    //类似java的写法
    for (str: String in list) {
        println(str)
    }

    //kotlin 解构写法
    for ((index,str) in list.withIndex()){
        println("第${index}个元素是$str")
    }
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/12062.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/xcx/12062.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定