匿名内部类
说明
- 本质是类
- 内部类
- 该类没有名字
匿名内部类是定义在外部类的局部位置,比如方法中,并且没有类名 - 基本语法
new 类或接口(参数列表){
类体
};
- 匿名内部类既是一个类的定义,同时它本身也是一个对象,因此从语法上看,它既有定义类的特征,也有创建对象的特征。因此可以调用匿名内部类方法。
调用方法1
new A(){
@Override
public void cry(){
sout();
}
}.cry();
调用方法2
A a = new A(){
@Override
public void cry(){
sout();
}
};
a.cry();
- 可以直接访问外部类的所有成员,包含私有的
- 不能添加访问修饰符,因为它的地位就是一个局部变量
- 作用域:仅仅在定义它的方法或代码块中
- 匿名内部类--访问-->外部类成员
- 外部其它类---不能访问--->匿名内部类(匿名内部类的地位是一个局部变量)
- 如果外部类和匿名内部类的成员重名时,默认遵循就近原则,如果想访问外部类地位成员,可以使用(外部类名.this.成员)去访问