美文网首页
记kotlin 中var、val与Java的final

记kotlin 中var、val与Java的final

作者: 清明捉鬼 | 来源:发表于2021-05-06 20:21 被阅读0次
    Kotlin关键字var 与val

    var 读写修饰的关键字
    var 可以重写set、get方法
    val只读修饰的关键字
    val 只能重写get方法
    lateinit关键字修饰的var可以不需要进行值初始化,但val必须初始化
    val 类似于java 的关键字final

    关键字final
    • 早期优化
      使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了
    • tips:final类中的所有成员方法都会被隐式地指定为final方法

    现在的final用法只有一个——即以下三种修饰行为所带来的影响

    • 修饰类
      当用final去修饰一个类的时候,表示这个类不能被继承。
    1. 被final修饰的类,final类中的成员变量可以根据自己的实际需要设计为final。
    2. final类中的成员方法都会被隐式的指定为final方法。
    • 修饰方法
      被final修饰的方法不能被重写。
    1. 一个类的private方法会隐式的被指定为final方法。
    2. 如果父类中有final修饰的方法,那么子类不能去重写。
    • 修饰成员变量
    1. 必须初始化值
      2.被final修饰的成员变量赋值,有两种方式:1、直接赋值 2、全部在构造方法中赋初值。
      3.如果修饰的成员变量是基本类型,则表示这个变量的值不能改变(二次赋值)。
      4.如果修饰的成员变量是一个引用类型,则是说这个引用的地址的值不能修改,但是这个引用所指向的对象里面的内容还是可以改变的。
    val与final差别之处目前发现仅在于如下特殊写法

    val的特殊写法

     val isTrue:Boolean
            get() {
                return this.dd=="cc"
            }
    
    

    此处isTrue随着当前对象dd的值改变而改变,但final若初始化值后则无法发生更改

    相关文章

      网友评论

          本文标题:记kotlin 中var、val与Java的final

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