62,614
社区成员
发帖
与我相关
我的任务
分享
package outerAndInnerClass;
public class Outer {
private int x = 100;
private String y = "hello world";
// 内部类
class Inner {
private String y = "hello";
private void innerMethod() {
System.out.println("内部类中的y是:"+y);
System.out.println("外部类中的y是:"+Outer.this.y);
System.out.println("外部类中的x是:"+x);
// 内部类调用外部类中的方法
outerMethod();
System.out.println("调用外部类方法后,外部类中的x是:"+x);
}
}
public void outerMethod() {
x++;
}
// 外部类方法中创建内部类对象
public void makeInner() {
Inner in = new Inner();
}
public static void main(String[] args) {
// 创建外部类对象out
Outer out = new Outer();
// 通过外部类对象创建内部类对象
Outer.Inner in = out.new Inner();
// 外部类调用内部类中的方法
in.innerMethod();
}
}
Outer out = new Outer();
Inner in = out.new Inner();
Outer out = new Outer();
Inner in = out.new Inner();
Inner in = new Outer().new Inner();
package outerAndInnerClass;
class Circle {
private double radius = 0;
public Circle(double radius) {
this.radius = radius;
getDrawInstance().drawShape(); // 先创建成员内部类的对象,再进行访问
}
private Draw getDrawInstance() {
return new Draw();
}
// 内部类
class Draw {
public void drawShape() {
System.out.println(radius); // 外部类private成员
}
}
}
public void makeInner() {
Inner in = new Inner();
in.innerMethod();
}
public static void main(String[] args) {
Outer out = new Outer();
out.makeInner();
}
是可以运行,就是不知道原因[/quote]
语法就是这么规定的,我也不知道什么原因。要想深究原因,就找创造语言的那个人啦public void makeInner() {
Inner in = new Inner();
in.innerMethod();
}
public static void main(String[] args) {
Outer out = new Outer();
out.makeInner();
}
是可以运行,就是不知道原因