首页 > 其他 > 详细

kotlin的final、open和const修饰符

时间:2019-05-28 16:25:31      阅读:108      评论:0      收藏:0      [点我收藏+]

1.final、open修饰符

(1)概念

? final用于修饰类、属性和方法,代表类、属性和方法是不可被继承的,kotlin类、属性、方法如果不添加修饰符(final/open修饰符)默认使用final修饰。

? open是final的反义词,用于对类、属性和方法开放继承权限。

/**
 * 默认final修饰的类
 */
class FinalClass
//class sub1 : FinalClass()//子类不能继承final类
/**
 * open修饰的类
 */
open class OpenClass
class sub2 : OpenClass()//子类可以继承open类

(2)注意点

? final和open不可用于修饰局部变量。

2.const修饰符

(1)概念

? const用来修饰可执行“宏替换”的常量。

? 宏替换:“宏变量”被称为“编译时”常量,宏替换指在编译阶段就会被替换掉

? const只能修饰不可变变量(val)

(2)“宏替换”常量条件

  • 使用const修饰;
  • 位于顶层或者是对象表达式的成员;
  • 初始值为基本数据类型(java8大类型);
  • 没有自定义的getter方法;
  • const val定义的变量,如果进行拼接或者运算,被拼接的其他变量也要是宏变量,否则编译不通过。

(3)使用

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"

kotlin的final、open和const修饰符

原文:https://www.cnblogs.com/nicolas2019/p/10937956.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!