美文网首页
记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