ad

通过《基于Kotlin的Android应用程序开发》_与成功更近一步_1.3.3 类的实例化

admin 84 2023-10-25

【摘要】 本书摘自《基于Kotlin的Android应用程序开发》一书中第1章,第3节,由薛岗编著。

1.3.3 类的实例化

类在实例化时,可使用的基本形式为:

通过《基于Kotlin的Android应用程序开发》_与成功更近一步_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: Array){

2 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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 [email protected] 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:打开《Python入门与实战》_一步步学会Python_8.4.2 案例解析
下一篇:通过《基于Kotlin的Android应用程序开发》_与成功更近一步_3.1.3 定义新窗体
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×