知识点:
匿名内部类依旧是一个类,但是没有名字,同时还是一个对象;再类的内部;
使用方法指南:
- 先创建一个类,可以是接口、抽象类、普通父类
- 需要明确声明关系 ,父与子、实现接口、抽象方法重写 例如:XX extends XX
- 在另一个类中调用,写一个方法,用来 new 父类的子方法cry();
- 在子类重写 cry(); 方法后,自己调用该方法;
- 在主方法 main() 中调用子类即可;
场景一:子类调用父类方法
这是父类
class Animal{
public void cry(){
System.out.println("这是父类的cry()方法~");
};
}
子类 (Outer) 继承父类,实现方法重写:
class Outer extends Animal{
public void method(){
Animal animal = new Animal() {
@Override
public void cry() {
System.out.println("这是匿名内部类~");
}
};
animal.cry();//调用cry()方法
}
在主函数中调用Outer子类 :
public static void main(String[] args) {
Outer outer = new Outer();
outer.method();
}
场景2:抽象方法:
首先定义一个抽象类,并且定义一个抽象方法:
abstract class Animal {
abstract public void cry();
}
再定义一个类,并且实现方法重载的方法:
class Outer {
public void method(){
Animal animal = new Animal() {
@Override
public void cry() {
System.out.println("这是匿名内部类~");
}
};
animal.cry();
}
主函数:(与上文一致)
public static void main(String[] args) {
Outer outer = new Outer();
outer.method();
}
场景3:实现接口
首先,定义一个接口:
interface Animal {
public void cry();
}
再定义一个类,并且实现方法重载的方法:
class Outer{
public void method(){
Animal animal = new Animal() {
@Override
public void cry() {
System.out.println("这是匿名内部类~");
}
};
animal.cry();
}
}
主函数与上文一致,省略;
运行结果:
相信看到这里的小伙伴对匿名内部类,已经有一定的了解了。匿名内部类的使用方法很简单,主要就是实现方法的重载,不用手动创建新的对象,系统会自己分配对象名。使用方法便捷,调用简单。