public class StaticAndInnerClasses {
String testString;
class InnerClass{
int x;
int y;
}
static class InnerStaticClass{
int a=10;
int b=20;
}
public void changeCharacter(){
testString="Characters modified";
}
public static void main(String[] args){
StaticAndInnerClasses.InnerStaticClass statciClassObject=new StaticAndInnerClasses.InnerStaticClass();
StaticAndInnerClasses outerObject=new StaticAndInnerClasses();
outerObject.changeCharacter();
InnerClass innerClassObject=outerObject.new InnerClass();
innerClassObject.changeCharacter();
}
}
内部类中的代码可以引用外部类中的内容。
对于这个玩具示例:
public class StaticAndInnerClasses {
String testString;
class InnerClass{
int x;
int y;
public void printString() {
changeCharacter();
System.out.println(testString);
}
}
static class InnerStaticClass{
int a=10;
int b=20;
}
public void changeCharacter(){
testString="Characters modified";
}
public static void main(String[] args){
StaticAndInnerClasses.InnerStaticClass statciClassObject=new StaticAndInnerClasses.InnerStaticClass();
StaticAndInnerClasses outerObject=new StaticAndInnerClasses();
StaticAndInnerClasses.InnerClass innerClassObject=outerObject.new InnerClass();
innerClassObject.printString();
}
}
因此,在内部类的代码中,可以引用外部类的方法和字段,就像在方法printstring()
中所做的那样。这不会将外部类方法转换为内部类的方法,因此代码(在外部类main
)
innerClassObject.changeCharacter();
但是,如果我在内部类中声明了一个同名的variabe呢?有什么方法可以显式引用外部变量吗? 顺便说一句,这和这个问题不同,因为它考虑的是局部堆栈变量。
问题内容: 嗨,我正在浏览有关内部类的SCJP书,发现了这一说法,类似这样。 方法本地类只能引用已标记的本地变量 在解释中,指定的原因与本地类对象和堆上的局部变量的范围和生存期有关,但我无法理解。我在这里想念任何东西吗? 问题答案: 原因是,在创建方法本地类实例时,编译器实际上会将其引用的所有方法本地变量复制到其中。这就是为什么只能访问变量的原因。甲变量或参考是不变的,所以它停留在同步与其方法本地
问题内容: 这不是直截了当的问题。在我的情况下,外部类变量和内部类setter方法的参数名称相同。喜欢: 现在,我无法初始化外部类实例变量p,因为它指示内部类。再次,我做不到它得到一个错误。现在如何分配外部p,同时将内部Class方法的参数命名为p? 问题答案: 这是您可以/应该这样做的方式:
这不是直截了当的问题。在我的例子中,外部类变量和内部类setter方法的参数名称是相同的。比如: 现在我不能用初始化外部类实例变量p,因为它指示内部类。同样,我不能执行会出现错误。现在,我如何分配外部p,使内部类方法的参数与名称p相同?
问题内容: 在内部类中,可以访问外部类的变量,但不能访问方法的局部变量。我了解了无法访问方法的局部变量的部分,但我想知道为什么外部类变量可以访问? 我的理解是,由于内部类与外部类绑定,因此只要父级可用,子级就可以访问其父级变量。我对么? 问题答案: 假设您的外部类在内部类的范围内(非静态)被称为,以获取该字段。 例如, 其中Outer是类的名称,并标识该字段。 您也可以直接抓取它,但是如果由于阴影
在内部类中,外部类的变量是可访问的,但方法的局部变量不是。我理解了关于方法的局部变量不可访问的部分,但我想知道为什么外部类变量是可访问的? 我的理解是,由于内部类与外部类绑定,因此只要父类可用,子类就可以访问其父变量。我说得对吗?