为了账号安全,请及时绑定邮箱和手机立即绑定

内部类的问题

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

正在回答

4 回答

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

0 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~

通过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();

}

}

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530696    人
  • 解答问题       6091    个

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

进入课程

内部类的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信