黑马程序员技术交流社区
标题:
java封装赋值内部类
[打印本页]
作者:
hzhzhen
时间:
2015-5-19 19:26
标题:
java封装赋值内部类
public class Person {
private String name ;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public class Outer{
public void getMoney(){
System.out.println(Person.this.getName()+"赚钱");
}
}
class Inner{
public void heart(){
System.out.println(Person.this.getName()+"心脏良好");
}
public void liver(){
System.out.println(Person.this.getName()+"肝脏不好请求治疗");
}
public void stomach(){
System.out.println(Person.this.getName()+"胃良好");
}
}
}
public class Run {
public static void main(String[] args) {
Person p = new Person();
p.setName("xx");
Person.Outer ou = new Person().new Outer();
ou.getMoney();
Person.Inner in = new Person().new Inner();
in.heart();
in.liver();
in.stomach();
}
}
复制代码
为什么这个name赋不上值啊?????
作者:
pvbj0314
时间:
2015-5-19 21:06
每个方法在调用时除了接收定义的参数外,还会修改this值,this会指向方法所在的类,所以你在内部类中使用this其实指的是内部类本身,而你的内部类没有name这个成员变量,自然你会得到null。既然是内部类,就可以直接访问外部类的成员变量,包括私有变量,无需使用外部类方法。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2