为啥是HelloWorld.this.name 这么调用外部类的名字

来源:7-6 Java 中的成员内部类

2016Caroline

2015-06-20 22:03

public void show() { System.out.println("外部类中的name:" +HelloWorld.this.name                  ); 请问这个name又不是静态成员,为什么可以直接用类名.的方式调用呢?

写回答 关注

3回答

  • qq_卟懂_03360209
    2016-05-27 16:38:59

    你理解的真棒,解决了我的问题

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


  • 2016Caroline
    2015-06-21 21:53:20

    谢谢你的回答,那请问为什么可以直接用类名调用呢?

    共 1 条回复 >

  • qq_绿动星光_0
    2015-06-21 15:03:33

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


Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530644 学习 · 6091 问题

查看课程

相似问题