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入门第二季
531293 学习 · 6327 问题
相似问题