记kotlin 中var、val与Java的final
2021-05-06 本文已影响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去修饰一个类的时候,表示这个类不能被继承。
- 被final修饰的类,final类中的成员变量可以根据自己的实际需要设计为final。
- final类中的成员方法都会被隐式的指定为final方法。
-
修饰方法
被final修饰的方法不能被重写。
- 一个类的private方法会隐式的被指定为final方法。
- 如果父类中有final修饰的方法,那么子类不能去重写。
- 修饰成员变量
- 必须初始化值
2.被final修饰的成员变量赋值,有两种方式:1、直接赋值 2、全部在构造方法中赋初值。
3.如果修饰的成员变量是基本类型,则表示这个变量的值不能改变(二次赋值)。
4.如果修饰的成员变量是一个引用类型,则是说这个引用的地址的值不能修改,但是这个引用所指向的对象里面的内容还是可以改变的。
val与final差别之处目前发现仅在于如下特殊写法
val的特殊写法
val isTrue:Boolean
get() {
return this.dd=="cc"
}
此处isTrue随着当前对象dd的值改变而改变,但final若初始化值后则无法发生更改