APP下载

详析 java中的构造函数与this关键字

2018-01-15刘志雄

世纪之星·交流版 2017年8期
关键词:对象

刘志雄

[摘 要]java中的构造函数与this在程序当中起着非常重要的作用:构造函数主要用来完成对对象属性的初始化工作;this的作用类似于C语言里的指针。本文将结合简单实例对构造函数与this的一般用法与特殊用法进行详细分析。

[关键词]构造函数;java;对象;this

在一个类中,如果定义了与成员变量同名的形式参数,要区分到底是成员变量还是形式参数,通过this来进行区分。在Java的学习当中,this关键字起着指针的作用,用来指示成员变量与成员方法还有构造函数。在已有的文献当中分析构造函数与this的用法时,用例和分析过于复杂,下面用简单实例来全面分析构造函数与this的用法。

一、构造函数与this用法实例

用例如下:

class student{

1.int age;

2.String name;

3.student(){

// 5.1 student(age);

4.System.out.println("空構造函数");}

5.student(int age){

6.this();

7.this.age=age;

8.System.out.println("带一个形参的构造函数"); }

9.student(int age, String name){

10. this(age);

11. this.age=age;

12. this.name=name;

13. this.f();

14. System.out.println("带两个形参的构造函数"); }

15. void f(){

16. //this();

17. System.out.println("成员方法"); }

18.public static void main(String[] args){

19. student a1=new student();

20. student a2=new student(20,"小军");

21. System.out.println("年龄"+a2.age+"名字"+a2.name);}}

程序运行结果如下:

二、构造函数与this一般用法的分析

第3行.5行.9 行是定义student类的构造函数,第6行.10行是用this来调用构造函数;另外,构造函数不能相互调用:如第5.1行与第6行。第7行.11行.12行是this用来指示成员变量,使用this.age, this.name来指示成员变量。第13行表示在构造函数中调用了成员方法f()。第19行与第20行是创建了两个对象,实际是运行了空构造函数与带两个形参的构造函数。如果程序中保留第19行与第20行时,必须把空构造函数写出来。程序的第21行是对对象a2的属性值的输出。

三、this 的特殊用法

接下来分析this在匿名类和内部类中的应用。

用例如下:

1.public class animal {

2.animal(){

3.Thread thread = new Thread(){

4.public void run() {

5.animal.this.run(); } }; //注意这里有分号

6.thread.start(); }

7.public void run() {

9.System.out.println("我是成员方法run ");}

10. public static void main(String[] args) {

11. animal as=new animal();}}

程序运行结果:

在上述实例中,thread是一个匿名类对象,run函数体内调用到了外部类animal的run函数。由于函数同名,不可直接调用:一是把外部类的run函数换一个名字如outrun,代码第5行改成animal.outrun(); 第7行public void run()改成public static void outrun()但这种方法不建议使用。二是用上面例子中的办法,用外部类的类名加上this引用来说明要调用的是外部类的方法run。

四、结语

构造函数:

1.构造函数的定义:方法名与类名相同且没有返回值。

2.构造函数的作用是对象属性的初始化,如程序中的第20行,依据参数传递分析知,20是对age的赋值,“小军”是对name的赋值。

3.空构造函数可随类的加载自动调用,但创建对象时,空构造函数与带参数的构造函数都用上了,这时空构造函数就必须显性的写出来即程序代码中的第3行。

this的用法:

1.this.变量名:用来指示成员变量,即代码中的第7行.1行1.12行,如this.age=age,等号后面的age构造函数中括号里的age, this.age中的age是指的成员变量。

2.this.方法名():用来指示成员方法,如代码中的this.f(),指的f()方法是成员方法。

3.this():这种格式的代码是用来指调用构造函数,如果括号里带了参数,指的是调用带参数的构造函数,如代码this(age),指的是调用带age参数的构造函数。

参考文献:

[1]唐明虎.基于项目任务驱动的Java语言教学模式研究[J].智能计算机与应用,2010,01.

[2] 安博教育集团,Java核心技术[M].北京:电子工业出版社,2012.

基金项目:湖南省教育科学“十三五”规划2017年度课题:XJK17BGD083 。endprint

猜你喜欢

对象
神秘来电
涉税刑事诉讼中的举证责任——以纳税人举证责任为考察对象
基于熵的快速扫描法的FNEA初始对象的生成方法
区间对象族的可镇定性分析
三角范畴中的(n,m)-强ξ-Gorenstein投射对象