匿名内部类就是内部类的简化写法。
前提:存在一个接口或者类,类也可以是抽象类。
匿名对象的格式1:new 类名或接口名(){ 重写方法 }
.方法
格式2:类名或接口名 对象 = new 类名或接口名(){重写方法}
对象.方法
本质:是一个继承了该类或者实现了该接口的匿名对象。
package Pro;
public interface Into {
public void math();
public void math2();
}
package Pro;
public class Stry {
public void sush() {
Into a =new Into() { //这里使用了多态,new Into()是一个子类对象
public void math() {
System.out.println("show");
}
public void math2() {
System.out.println("show2");
}
};
a.math();
a.math2();
}
}
package Pro;
public class ProText {
public static void main(String[] args) {
Stry s = new Stry();
s.sush();
}
}
匿名内部类好处在于用完立马被回收。
弊端在于匿名类只能使用一次,再次使用时要重新开辟空间,所以在多次调用时不推荐用。
内部类需要注意的几个特点
(1)内部类可以直接访问外部类的成员,包括私有。但外部类访问内部类的成员或方法,必须要创建对象。
(2)访问内部类的格式 外部类名.内部类名 对象名 = 外部类对象.内部类对象。
局部内部类:
(1)可以直接访问外部类的成员,访问局部变量时需要加final。
(2)在局部位置可以创建内部类对象,通过对象调用内部类方法,来使用内部类功能。