A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hzhzhen 中级黑马   /  2015-5-19 19:26  /  239 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class Person {
  2. private String name ;
  3. public void setName(String name) {
  4.   this.name = name;
  5. }
  6. public String getName() {
  7.   return name;
  8. }
  9. public class Outer{
  10.   
  11.   public void getMoney(){
  12.    System.out.println(Person.this.getName()+"赚钱");
  13.   }
  14.   
  15. }
  16. class Inner{
  17.   public void heart(){
  18.   System.out.println(Person.this.getName()+"心脏良好");
  19. }
  20.   public void liver(){
  21.    System.out.println(Person.this.getName()+"肝脏不好请求治疗");
  22.   }
  23.   public void stomach(){
  24.    System.out.println(Person.this.getName()+"胃良好");
  25.   }
  26. }
  27. }

  28. public class Run {
  29. public static void main(String[] args) {
  30.   Person p = new Person();
  31.   p.setName("xx");
  32.   Person.Outer ou = new Person().new Outer();
  33.   ou.getMoney();
  34.   Person.Inner in = new Person().new Inner();
  35.   in.heart();
  36.   in.liver();
  37.   in.stomach();

  38. }
  39. }
复制代码

为什么这个name赋不上值啊?????

1 个回复

倒序浏览
每个方法在调用时除了接收定义的参数外,还会修改this值,this会指向方法所在的类,所以你在内部类中使用this其实指的是内部类本身,而你的内部类没有name这个成员变量,自然你会得到null。既然是内部类,就可以直接访问外部类的成员变量,包括私有变量,无需使用外部类方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马