和super对应,很像
在默认构造器里其实就是默认的this();或者super(); 它和**className();**等价
先说结论:
一:
this就指代这这个类的一个实例,但是并没有赋给它名字
public class Outer {
private int id;
public Outer(){
}
public Outer(int id){
//this 和 super很像 this()就等于new className()
//等同于 new Outer().id =id;
this.id = id;
}
public void out(){
System.out.println("outer class");
}
二:
“类名.this”的语法在Java语言中叫做“qualified this”。相关规定在这里:Chapter 15. Expressions - Qualified this
这个语法的主要用途是:在内部类的方法中,要指定某个嵌套层次的外围类的“this”引用时,使用“外围类名.this”语法。
在Foo.Bar类中的getFoo()方法中,如果直接写“this”的话所指的是这个Foo.Bar类的实例,而如果要指定外围的Foo类的this实例的话,这里就得写成Foo.this。
特别的,如果在上例的getFoo()方法中写Bar.this的话,作用就跟直接写this一样,指定的是当前的Foo.Bar类实例。
class Foo {
class Bar {
Foo getFoo() {
return Foo.this;
}
}
}