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

内部类的问题

为什么内部方法show 访问外部类的 age成员的时候不用通过this?

提问者:qq_莫欺少年一时穷_3 2017-06-12 22:23

个回答

  • 慕沐6583438
    2017-07-02 16:48:37

    因为内外有同名的成员时,用this来调用外部的成员以区别默认的直接调用内部的。。age唯独外部类独有因此不需要了,因为内部类可以直接用外部类的哪怕private了

  • 黑夜_K
    2017-06-20 13:35:43

    因为内部类也有name,你想要访问外部类的name就需要用到this关键字,但是age只有外部类有,所以会默认输出外部类的age值

  • 慕婉清0689395
    2017-06-12 22:43:53

    通过this关键字访问的是当前类的成员属性;

    package com.hwadee.day612;


    //外部类HelloWorld

    public class HelloWorld{

      

      //外部类的私有属性name

      private String name = "imooc";

      

      //外部类的成员属性

      int age = 20;

      

    //成员内部类Inner

    public class Inner {

    String name = "爱慕课";

    int age = 10;

          //内部类中的方法

    public void show() { 

    int age = 30;

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

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

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

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

    System.out.println("内部类方法中的age:" + age);

    }

    }

      

    //测试成员内部类

    public static void main(String[] args) {

          

          //创建外部类的对象

    HelloWorld o = new HelloWorld (); 

          

          //创建内部类的对象

    Inner inn =o.new Inner();

          

          //调用内部类对象的show方法

    inn.show();

    }

    }

    当内部类方法局部变量,内部类成员变量,以及外部类的成员变量重名时;可以通过对比加深理解。

  • 初心丶花
    2017-06-12 22:38:25

    因为age不是私有的外部类属性,而name是私有的外部类属性