问答详情
源自:7-6 Java 中的成员内部类

关于内部类中引用外部属性

为什么不能直接(外部类名.属性名)呢

提问者:西瓜战神 2016-08-23 11:40

个回答

  • 用户1098335
    2016-09-16 22:07:31

    作用范围不同,直接那样做,容易搞混淆

  • a鹊桥仙
    2016-08-25 22:13:15

    public class HelloWorld{

     //外部类的私有属性name

        private String name = "imooc";

    //外部类的成员属性

        int age = 20;

    //成员内部类Inner

    public class Inner {

    String name = "爱慕课";       

    public void show() { 

    -----------------------------------1------------------

    System.out.println("外部类中的name:" + HelloWorld.this.name );

    System.out.println("内部类中的name:" + name     );

    System.out.println("外部类中的age:" + age);

    结果:

    外部类中的name:imooc (两个name名称相同,外部类的变量使用this关键字

    内部类中的name:爱慕课

    外部类中的age:20

    ----------------------------------2-------------------

    System.out.println("外部类中的name:" + name );

    System.out.println("内部类中的name:" + name     );

    System.out.println("外部类中的age:" + age);

    结果:

    外部类中的name:爱慕课  (两个name名称相同,默认内部类的变量name

    内部类中的name:爱慕课

    外部类中的age:20


  • 东之神哥
    2016-08-23 11:58:48

    对于成员内部类来说,当外部类和内部类有相同的成员变量和方法时,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量和方法需要使用this关键字;对于静态内部类,不能直接访问外部类的非静态成员,需要通过"new外部类().成员"的方式访问