qq_慕侠9518479
2019-07-22 14:09
package com.imooc;
import com.imooc.HelloWorld.Outer.Inner;
public class HelloWorld{
public class Outer{
private int a = 99;
public class Inner {
int b = 2;
public void test() {
System.out.println("访问外部类中的a:"+a);
System.out.println("访问内部类中的b:"+b);
}
}
public static void main (String[] args){
Outer o = new Outer();
Inner i = o.new Inner();
i.test();
}
}
}
多层嵌套内部类这样的,可以这样写
//外部类HelloWorld public class HelloWorld{ //外部类的私有属性name private String name = "imooc"; //外部类的成员属性 int age = 20; //成员内部类Outer public class Outer { //Outer类的成员属性 String name="第二遍我爱慕课!"; //成员内部类Inner public class Inner { String name = "爱慕课"; //内部类中的方法 public void show() { System.out.println("HelloWorld外部类中的name:" + HelloWorld.this.name ); System.out.println("Outer外部类中的name:" + Outer.this.name ); System.out.println("内部类中的name:" + this.name ); System.out.println("外部类中的age:" + age); } } } //测试成员内部类 public static void main(String[] args) { //创建外部类的对象 HelloWorld o = new HelloWorld (); //创建内部类的对象 Outer out = o.new Outer(); Outer.Inner inn = out.new Inner();//此处直接写Inner类型是报错的,因为Inner类还在Outer类的内部 //调用内部类对象的show方法 inn.show(); } }
你这里有三个类
HelloWorld类 包含 Outer类 包含 Inner类
是顺序关系,你的类嵌套三层
要在HelloWorld类里去调用最里层的Inner类的方法
先实例化HelloWorld类,再实例化Outer类,再实例化Inner类
package com.imooc; import com.imooc.HelloWorld.Outer.Inner; public class HelloWorld{ public class Outer{ //注意在这里修改成public static class Outer{ private int a = 99; public class Inner { int b = 2; public void test() { System.out.println("访问外部类中的a:"+a); System.out.println("访问内部类中的b:"+b); } } public static void main (String[] args){ Outer o = new Outer(); //或者这里改成Outer o = new HelloWorld().new Outer(); Inner i = o.new Inner(); i.test(); } } } 内部类中存在静态成员,需要修改成静态内部类(静态内部类相当于一个外部类)
改成这样可行
//外部类
public class HelloWorld{
private int a = 99;
public class Inner {
int b = 2;
public void test() {
System.out.println("访问外部类中的a:"+HelloWorld.this.a);
System.out.println("访问内部类中的b:"+b);
}
}
public static void main (String[] args){
HelloWorld o = new HelloWorld();
Inner i = o.new Inner();
i.test();
}
}
HelloWorld是外部类,其他的是内部类,外部类没有实例化,
Java入门第二季 升级版
530553 学习 · 6091 问题
相似问题