成员内部类是最普通的内部类,它的定义为位于另一个类的内部,形如下面的形式: class Outer { private double x = 0; public Outer(double x) { this.x = x; } class Inner { //内部类 public void say() { System.out.println("x="+x); } } } 特点: 成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)。 不过要注意的是,当成员内部类拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,即默认情况下访问 的是成员内部类的成员。如果要访问外部类的同名成员,需要以下面的形式进行访问: 外部类.this.成员变量 外部类.this.成员方法 外部使用成员内部类 Outter outter = new Outter(); Outter.Inner inner = outter.new Inner();
public class qxy {
public static void main(String[] args) {
person p=new person();
person.hello h= p.new hello();
h.say();
p.setName("秦晓燕");
h.say();
}
}
public class person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
class hello{
public void say() {
String name="李四";
System.out.println("名字是"+name);
System.out.println("名字是"+person.this.name);
}
}
}
名字是李四
名字是null
名字是李四
名字是秦晓燕
person p=new person();
person hello h=new p.hello();