内部类
a.匿名内部类:
父类/父接口 变量名=new 父类/父接口(){
};
class Father{
}
interface Fly{
void fly();
}
Fahter father=new Father(){//Father的子类对象
};
Fly fly=new Fly(){//Fly接口的子类对象
public void fly(){
}
};
b.局部内部类和成员内部类:
public class Person {
private String name;
class Heart { //定义在成员位置上为成员内部类
private int age;
private String name;
public void heartMethod() {
System.out.println(this.name);
System.out.println(name);//this.name和name都使用的是Heart的name
System.out.println(Person.this.name);//由于Heart类的name和Person类的name重名
//因此要想访问Person的name需要加Person.this来访问
Person.this.getName();
}
}
public void setName(String name) {
this.name = name;
}
public void outerMethod() {
class Inner { //局部内部类
public void innerMethod() {
System.out.println(Person.this.name);
System.out.println(name);//即使不加Person.this默认也有,都是访问的Perso
}
}
new Inner().innerMethod();
}
public String getName() {
return name;
}
}
class Demo {
public static void main(String[] args) {
Person person = new Person();
person.setName("张三");
Person.Heart heart = person.new Heart();
heart.heartMethod();
person.outerMethod();
}
}
|
|