public void show() { System.out.println("外部类中的name:" +HelloWorld.this.name ); 请问这个name又不是静态成员,为什么可以直接用类名.的方式调用呢?
你理解的真棒,解决了我的问题
package guqingtong; //外部类HelloWorld public class HelloWorld{ //外部类的私有属性name private static String name = "imooc"; //外部类的成员属性 int age = 20; //成员内部类Inner public class Inner { String name = "爱慕课"; //内部类中的方法 public void show() { System.out.println("外部类中的name:" +HelloWorld. name ); System.out.println("内部类中的name:" + name ); System.out.println("外部类中的age:" + age); } } //测试成员内部类 public static void main(String[] args) { //创建外部类的对象 HelloWorld o = new HelloWorld (); //创建内部类的对象 Inner inn = o.new Inner () ; //调用内部类对象的show方法 inn.show(); } }
谢谢你的回答,那请问为什么可以直接用类名调用呢?
//外部类HelloWorld
public class HelloWorld{
//外部类的私有属性name
private String name = "imooc";
//外部类的成员属性
int age = 20;
//成员内部类Inner
public class Inner {
String name = "爱慕课";
//内部类中的方法
public void show() {
System.out.println("外部类中的name:" + HelloWorld.this.name );
System.out.println("内部类中的name:" + name );
为了区别内部 和 外部(当内部和外部一样的话),引用外部时,就要这样;否则就默认内部的name;