? final用于修饰类、属性和方法,代表类、属性和方法是不可被继承的,kotlin类、属性、方法如果不添加修饰符(final/open修饰符)默认使用final修饰。
? open是final的反义词,用于对类、属性和方法开放继承权限。
/**
* 默认final修饰的类
*/
class FinalClass
//class sub1 : FinalClass()//子类不能继承final类
/**
* open修饰的类
*/
open class OpenClass
class sub2 : OpenClass()//子类可以继承open类
? final和open不可用于修饰局部变量。
? const用来修饰可执行“宏替换”的常量。
? 宏替换:“宏变量”被称为“编译时”常量,宏替换指在编译阶段就会被替换掉。
? const只能修饰不可变变量(val)
fun main(args: Array<String>) {
//const1和const2是宏变量,因此在编译时就会被替换成对应的常量
println(const1 === "const1")//true,相当于println("const1" === "const1")
println(const2 === "const2")//true,相当于println("const2" === "const2")
}
//定义宏变量const1
const val const1 = "const1"
//定义宏变量const2(发生字符串拼接,即使拼接时有隐式转换,该变量还是宏变量)
const val const2 = "const" + 2
//定义普通变量
val common = "common"
//下面两种定义宏变量方式编译报错
//const val errorConst1 = "errorConst1$common"
//const val errorConst2 = "errorConst2${getStr()}"
/**
* 定义一个方法返回str
*/
fun getStr(): String = "str"
原文:https://www.cnblogs.com/nicolas2019/p/10937956.html