在java中显式限定此关键字的作用域是如何工作的?
我知道在java中显式限定此关键字的作用域是如何工作的?,java,Java,我知道这个关键字用于指向当前类字段并调用构造函数,如: class A{ String name; public A(String name) { this.name=name; this.(name.length()); } public(int len) { //some code here } } 但我最近遇到的问题是: class B extends A { A varA = B.this; } 我不明白这是怎么回事。任何人都可以详细说明
这个
关键字用于指向当前类字段并调用构造函数,如:
class A{
String name;
public A(String name)
{
this.name=name;
this.(name.length());
}
public(int len)
{
//some code here
}
}
但我最近遇到的问题是:
class B extends A
{
A varA = B.this;
}
我不明白这是怎么回事。任何人都可以详细说明这个
意味着你得到了B类实例的引用/指针,B继承自A,所以你实际上是在用B的引用/指针初始化A
B.this
在匿名/内部类中调用B类的实例时非常有用
你也可以调用this
,它相当于B。this
但是你不能在匿名/内部类中调用this
,否则你会得到它们的实例而不是类B
实例。B。这意味着你得到的是B类实例的引用/指针,B继承自A,因此您实际要做的是使用B的引用/指针初始化A
B.this
在匿名/内部类中调用B类的实例时非常有用
你也可以调用this
,它相当于B。this
但是你不能在匿名/内部类中调用this
,否则你会得到它们的实例而不是类B
实例。B。这意味着你得到的是B类实例的引用/指针,B继承自A,因此您实际要做的是使用B的引用/指针初始化A
B.this
在匿名/内部类中调用B类的实例时非常有用
你也可以调用this
,它相当于B。this
但是你不能在匿名/内部类中调用this
,否则你会得到它们的实例而不是类B
实例。B。这意味着你得到的是B类实例的引用/指针,B继承自A,因此您实际要做的是使用B的引用/指针初始化A
B.this
在匿名/内部类中调用B类的实例时非常有用
你也可以调用this
,它相当于B。this
但是你不能在匿名/内部类中调用this
,否则你会得到它们的实例而不是类B
实例。B。这个
是对B
类实例的引用
当B
扩展A
时,可以声明A
类型的变量,并将其分配给B
类实例的引用。B。此
是对B
类实例的引用
当B
扩展A
时,可以声明A
类型的变量,并将其分配给B
类实例的引用。B。此
是对B
类实例的引用
当B
扩展A
时,可以声明A
类型的变量,并将其分配给B
类实例的引用。B。此
是对B
类实例的引用
当B
扩展A
时,可以声明类型为A
的变量,并将其分配给对B
类实例的引用。事实上,this
关键字用于引用类的实例
当你这样做的时候
this.name
B.this
您指的是类A
的实际实例中的属性name
当你这样做的时候
this.name
B.this
您指的是B
类实例。事实上,this
关键字用于指代类实例
当你这样做的时候
this.name
B.this
您指的是类A
的实际实例中的属性name
当你这样做的时候
this.name
B.this
您指的是B
类实例。事实上,this
关键字用于指代类实例
当你这样做的时候
this.name
B.this
您指的是类A
的实际实例中的属性name
当你这样做的时候
this.name
B.this
您指的是B
类实例。事实上,this
关键字用于指代类实例
当你这样做的时候
this.name
B.this
您指的是类A
的实际实例中的属性name
当你这样做的时候
this.name
B.this
您所指的是B
类的重要性。在您的示例中,B。此
相当于此
,因此说明性不强。作用域当您开始使用内部类时,此
声明更有价值
class Outer {
public void doSomething() {
}
class Inner {
public void doSomething() {
Outer.this.doSomething();
}
}
}
注意Outer.this
在internal
类中的用法。没有它,内部类将无法在引用内部实例的this
和引用外部实例的this
之间消除歧义。在您的示例中,B。this
相当于this
,因此它不是很好的说明性。作用域当您开始使用内部类时,此
声明更有价值
class Outer {
public void doSomething() {
}
class Inner {
public void doSomething() {
Outer.this.doSomething();
}
}
}
注意Outer.this
在internal
类中的用法。如果没有它,内部类将无法运行