为了账号安全,请及时绑定邮箱和手机立即绑定

第一个图代码为啥运行不起来

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

正在回答

5 回答

多层嵌套内部类这样的,可以这样写

//外部类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();
    }
}


4 回复 有任何疑惑可以回复我~

你这里有三个类

HelloWorld类   包含 Outer类  包含  Inner类

是顺序关系,你的类嵌套三层

要在HelloWorld类里去调用最里层的Inner类的方法

先实例化HelloWorld类,再实例化Outer类,再实例化Inner类


3 回复 有任何疑惑可以回复我~
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();
}
    }
}

内部类中存在静态成员,需要修改成静态内部类(静态内部类相当于一个外部类)


2 回复 有任何疑惑可以回复我~

改成这样可行

//外部类

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

}


}


2 回复 有任何疑惑可以回复我~

HelloWorld是外部类,其他的是内部类,外部类没有实例化,

2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

第一个图代码为啥运行不起来

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信