匿名内部类是没有名称的内部类。
在Java中调用某个方法时,
如果该方法的"参数是接口类型",除了可以"传入一个接口实现类",
还可以"使用实现接口的匿名内部类作为参数",
"在匿名内部类中直接完成方法的实现。"
匿名内部类使用场景:"作为方法的参数传递"
方案一:
传统实现方式:
1.编写实现类
2.实现类中重写抽象方法
3.创建实现类对象
4.将实现类对象作为方法的参数传递 Animal_419 a=new dog_419()
方案二:(传统方法的步骤优化方案)
匿名内部类:没有名字的特殊局部内部类,匿名内部类使用场景,
作为方法的参数传递。
格式1:
new 类名 或 接口名()
{
重写方法
}
方案一(传统法) :"如果该方法的参数是接口类型,可以传入一个接口实现类"
public class text5_419
{
public static void main(String[] args)
{
dog_419 dog=new dog_419();
useAnimal(dog); / useAnimal() 此句实现useAnimal()方法,"但传参是接口类型的,而接口是不能直接出创建对象",所以必须搞一个实现类对象才行
}
public static void useAnimal(Animal_419 a)
{
a.eat();
}
}
package sk;
public interface Animal_419 {
public abstract void eat();
}
package sk;
public class dog_419 implements Animal_419
{
public void eat()
{
System.out.println("狗吃肉");
}
}
方案二(匿名内部类法): 如果该方法的参数是接口类型,还可以"使用实现接口的匿名内部类作为参数",在匿名内部类中直接完成方法的实现。
public class text5_419
{
public static void main(String[] args)
{
useAnimal(
new Animal_419()
{
public void eat()
{
System.out.println("狗吃肉");
}
}
);
}
public static void useAnimal(Animal_419 a)
{
a.eat();
}
}
package sk;
public interface Animal_419 {
public abstract void eat();
}
`