gpt4 book ai didi

java - 如何从内部类对象访问外部类的方法和全局变量,如果不能,那么拥有内部类的目的是什么

转载 作者:行者123 更新时间:2023-11-30 04:03:40 24 4
gpt4 key购买 nike

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();



}
}

正如您在我的代码中看到的,我在最后一行创建了一个innerClassObject,现在我想知道为什么我无法使用innerClassObject访问String testString。 testString 不是全局变量,并且我没有在outerClass 中创建innerClass 的实例,即“StaticAndInnerClasses” 如果不可能,那么为什么要有内部类

最佳答案

内部类中的代码可以引用外部类中的内容。

对于这个玩具示例:

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();

正如您在评论中引用的那样,将不起作用。它实际上无法编译。

关于java - 如何从内部类对象访问外部类的方法和全局变量,如果不能,那么拥有内部类的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21324020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com