CODE函数-英雄云拓展知识分享
128
2023-10-25
【摘要】 本书摘自《基于Kotlin的Android应用程序开发》一书中第1章,第3节,由薛岗编著。
1.3.3 类的实例化
类在实例化时,可使用的基本形式为:
val 对象名=类名(参数列表)
var 对象名=类名(参数列表)
当一个类被实例化为一个对象以后,对象中的属性和方法通过点操作符(.)来访问,基本的 形式有对象名.属性、对象名.方法名(参数列表)。
1.3.4 设值器和取值器 (setter和 getter)
Kotlin类针对类属性可使用相应的设值器和取值器。设值器是用来设置类中指定属性的数值, 而取值器则是用来帮助外部程序访问特定属性的数值。 Kotlin 类中的属性分为两种:普通变量和 只读变量。针对普通变量属性,在定义变量时,系统会指定默认的设值器和取值器;针对只读变 量属性,在定义常量时,系统会指定默认的取值器(不指定设值器)。
若应用程序想修改系统指定的设值器和取值器,则可采用以下结构来完成工作:
class 类名(参数列表){
var 变量:变量类型=赋值语句
变量取值器定义
变量设值器定义
val 只读变量:常量类型=赋值语句
变量取值器定义
取值器在定义时使用关键字 get; 设值器在定义时使用关键字 set。下列示例程序展示了设值 器和取值器的修改过程:
1 class SimpleClass (str:String)(
2 var att1-= str
var att2: String?= null
4 get(){//自定义取值器
5 if(field == null){
return "an attribute"
}else{
8 return field
set(s: String?){//自定义设值器
12 field ="att2 again"
13
14 }
上述程序定义了一个名为SimpleClass的类,该类中有两个属性 att1 和 att2,其 中 ,att1属性 使用了系统默认设值器和取值器;而att2则自定义了设值器和取值器。程序第4行至第10行,定 义了att2的取值器,该取值器可根据属性的情况返回不同的结果;当att2为空值时,取值器会自 动返回字符串"an attribute"; 若 att2 不为空值时,取值器返回实际值。程序第11行至第13行定 义了att2的设值器,而从程序可见,该设值器会将 att2设置为 “att2 again”。 程序第4行至第13 行中,程序使用了field关键字,该关键字指代一个属性实例;而在上述示例程序中, field实际指 代的是类属性 att2。
下列程序展示了使用 SimpleClass类属性设值器和取值器的方法:
fun main(args: Array2 var cls = SimpleClass("a class") println(cls.att1)
4 cls.att1 ="a value"
5 println(cls.att1)
7 println(cls.att2) cls.att2 ="att"
9 println(cls.att2) 10 }
上述程序中,第3行中的println(cls.att1)语句是调用att1 的默认取值器;第4行中cls.att1="a value"调用 attl 的默认设值器;第5行中println(cls.att1)语句再次调用 att1 的默认取值器。第7行 中的println(cls.att2)语句会调用att2的自定义取值器,获得的值为“an attribute”。第 8 行 中 cls.att2 ="att"调用att2的自定义设值器,该设值器设置了参数“att”;然而,根据程序定义,设值器中的 参数并没有被使用(程序中直接使用 field="att2 again")。 因此,第9行中的 println(cls.att2)语句 调用att2的自定义取值器,获得的结果为“att2 again”。程序运行结果如下:
1 a class
2 a value
3 an attribute
4 att2 again
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~