this表示对类自己的引用,可以引用自己的变量,比如在方法内部有重名的局部变量时,同c++
this()也可以用来调用自己的构造器,有一些规则,先贴正确代码
class Base
{
public int a,b;
public Base()
{
this(3,4);
}
public Base(int p1,int p2)
{
a = p1;
b = p2;
}
}
public class ThisSuper {
public static void main(String[] args)
{
Base base1 = new Base(2,2);
System.out.println(base1.a);
}
}
上面结果输出2。
规则:
this()必须在一个构造器内,并且必须是第一行,并且必须是别的构造器
class Base
{
public int a,b;
public Base()
{
this();
}
public Base(int p1,int p2)
{
a = p1;
b = p2;
}
}
是错的,调用了自己。
class Base
{
public int a,b;
public Base()
{
a = 1;
this(3,4);
}
public Base(int p1,int p2)
{
a = p1;
b = p2;
}
}
也是错的,不在第一行。
super.变量 可以访问父类变量,当子类和父类中有同名变量时,父类变量并没有被覆盖,而是被隐藏,可以用super.变量访问。
super()可以调用父类构造器,不显式调用即会隐式调用,同c++。在一个构造器内用this()调用另一个构造器时,父类构造器会在“另一个”构造器执行时被调用(书上说的,不知道怎么试,反正都是第一行)。