没有名字的内部类
创建某个类(接口)的子类对象
步骤1:定义带名字的类
步骤2:创建对象
意义:
匿名内部类是创建某个类型子类的快捷方式 - 语法简单
我们临时定义的一个类的子类,并且创建这个子类的对象而使用的匿名内部类
优点:
1.节省代码量
2.一次性的
格式:
new 父类(){
重写父类的方法
}
匿名内部类在以后的用法很多,暂时熟悉语法
父类:
/**** 父类 - 抽象类* 吃饭,睡觉的方法*/package Test14_Demo.Demo09;/*@create 2020--12--02--16:16*/public abstract class Animal {public abstract void eat();public abstract void sleep();}
子类:
/**** 实现类 - 子类** 定义子类的方法,重写父类的方法*/package Test14_Demo.Demo09;/*@create 2020--12--02--16:17*/public class Dog extends Animal{@Overridepublic void eat() {System.out.println("啃骨头");}@Overridepublic void sleep() {System.out.println("睡狗窝");}}
测试类:
package Test14_Demo.Demo09;/*@create 2020--12--02--16:12*/public class AnonymousInnerClassDemo {public static void main(String[] args) {//使用有类名的子类(多态的使用) - 父类的引用指向子类的对象Animal animal = new Dog();animal.eat();animal.sleep();System.out.println("-------------------------");//使用匿名内部类的方式实现 - 创建了一个子类Animal a = new Animal() {@Overridepublic void eat() {System.out.println("吃草");}@Overridepublic void sleep() {System.out.println("站着睡");}};//使用匿名内部类的方法a.eat();a.sleep();//只是看语法,这个匿名内部类是用来实现线程的 - 系统中直接拿过来用的Thread t = new Thread(){public void run() {}};}}
