好吧,楼主,首先很感谢你发的这个帖子,因为我在补足运行代码时发生了好多低级的细节小错误,让我学到了好多。估计是这几天没怎么学习,长时间没打代码导致的。待会我会重新发个帖子,把错误分享给大家。言归正传,说正事:
这个代码是没错误的,主要是为了学习内部类的访问规则。
首先说下调用内部类B的方法func()的运行结果:A的X为:1 B的X为:2 func的X为:2
为什么会这样呢?道理很简单,帮你解析下,首先this是代表本类对象的引用!这个要明确。能调用类的方法的就两种方式:一种类名调用,即类名.方法,但是这个要求方法必须是静态的。第二种就是常见的,建立类的对象进行调用。本例中,成员变量x不是静态的,内部类B即方法func()也不是静态的(如果func()静态,内部类B也必须用static修饰),所以得用第二种方式调用,即创建本类对象调用,即是this。A.this.x,B.this.x可以理解为A类或B类的对象的x。首先A的X为:1这很好理解,本类对象调用本类成员变量,如果想调用B的x的值,必须创建内部类B的对象进行调用。B的X为:2 func的X为:2,这更好理解,内部类中,本类有的用本类中的,没有用外部类的。
所以this.x这里的this不可以去掉,如果去掉就变成A.x或者B.x,即类名直接调用,只有静态才可以类名直接调用。啰啰嗦嗦打这么多字好累的说~~o(>_<)o ~~ |