匿名内部类的概述
/*
匿名内部类,就是内部类的简写格式。
属于局部内部类。
必须有前提,内部类必须继承或者实现一个外部类或者接口。
匿名内部类,其实就一个匿名子类对象。
格式 new父类or接口(){子类内容};
通常的使用场景之一,当函数参数是接口类型时,而且接口中的方法不超过三个。内部类效率更高;增强阅读性,即多态的使用。
可以用匿名内部类作为实际参数进行传递。
匿名内部类方法使用方式:充分理解匿名内部类为一个实例对象的含义。即多态的表现,当方法过多时,可选择赋值给一个父类引用,之后使用父类引用进行方法调用。
*/
class Outer
{
void method(){
Object obj=new Object(){
public void show(){
System.out.println("show run");
}
}
obj.show();
//因为匿名累不累这个子类对象被向上转型为了object类型。这样就不能再用子类的特有方法了。
}//内部类可以存放在局部位置上,内部类在局部位置上,只能访问局部中被final修饰的局部变量。因为在局部位置中,不被final修饰的变量有可能运行完就是放了,而内部类还没有被创建。
}
class Demo implements Speak
{
public static void main(String[] args){
//学习匿名内部类之前的做法
Speak s=new Person();//创建一个实例
speak.say();
//匿名类
new Person().say();
//使用匿名内部类
Speak s1=new Speak(){
public void say(){
System.out.println("匿名内部类");
}
};
s1.say();
//简化为
new Speak(){
public void say(){
System.out.println("匿名内部类");
}
}.say();
} |
|