'this'是Java为下面这两个目的而创建的内部隐含对象。
- "this"对象在内部指向当前类对象。
- 每当类的正式参数和数据成员相似时,要从正式参数区分类的数据成员,必须通过"this"处理类的数据成员。
this()用于从当前类参数化构造函数调用当前类默认构造函数。
this(...)用于从同一类的其他类别构造函数调用当前类参数化构造函数。
例如:
class Test { int a, b; Test () { this (10); // 调用当前类的单个参数构造函数 System.out.println ("我来自默认构造函数。。。"); a=1; b=2; System.out.println ("VALUE OF a = "+a); System.out.println ("VALUE OF b = "+b); } Test (int x) { this (100, 200); // 调用当前类的2个参数的构造函数 System.out.println ("我来自1个参数的构造函数。。。"); a=b=x; System.out.println ("VALUE OF a = "+a); System.out.println ("VALUE OF b = "+b); } Test (int a, int b) { System.out.println ("我来自2个参数的构造函数。。。"); this.a=a; this.b=b; System.out.println ("VALUE OF a = "+this.a); System.out.println ("VALUE OF b = "+this.b); System.out.println ("VALUE OF a = "+a); System.out.println ("VALUE OF b = "+b); } };
class TestDemo { public static void main (String k []) { Test t1=new Test (); } };
"this"规则:
每当我们在当前类构造函数中使用this()或者this(...)时,必须仅使用该语句仅用作第一个语句。
包含this()或者this(...)的输出的顺序将是我们给出作为输入的输入的相反顺序。
例如,我们需要输出如下:
I AM FROM DEFAULT CONSTRUCTOR... ---1 VALUE OF a = 1 VALUE OF b = 2 I AM FROM SINGLE PARAMETERIZED CONSTRUCTOR... ---2 VALUE OF a = 100 VALUE OF b = 200 I AM FROM DOUBLE PARAMETERIZED CONSTRUCTOR... ---3 VALUE OF a = 10 VALUE OF b = 10 We must write in the following order as input: Test (10); ---3 Test (100, 200); ---2 Test (); ---1
说明:
每当我们引用类似于正式参数的数据成员时,JVM都会首先偏好于正式参数,而每当我们在类的变量名称之前写一个关键字,那么JVM都会引用类的数据成员。
this方法用于调用当前类构造函数。
说明:
如果对象调用的任何方法,那么该对象称为源对象。
如果我们将对象作为参数传递给该方法,那么该对象称为目标对象。
例如:
SOURCE OBJECT. METHOD NAME (TARGET OBJECT); t1. display (t2); //written in main
在显示方法的定义中,T1数据成员由this引用。
数据成员名称(this.a & this.b)而t2对象数据成员通过形式对象名称引用。
数据成员名称(T. A& T. B)。
void display (Test T) //T is formal object member { System.out.println ("VALUE OF a BELONGS TO DATA MEMBER ="+this.a); System.out.println ("VALUE OF b BELONGS TO DATA MEMBER ="+this.a); System.out.println ("VALUE OF a BELONGS TO FORMAL OBJECT MEMBER ="+T.a); System.out.println ("VALUE OF b BELONGS TO FORMAL OBJECT MEMBER ="+T.a); }
日期:2020-04-11 23:04:29 来源:oir作者:oir