没有名字的内部类
创建某个类(接口)的子类对象
步骤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{
@Override
public void eat() {
System.out.println("啃骨头");
}
@Override
public 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() {
@Override
public void eat() {
System.out.println("吃草");
}
@Override
public void sleep() {
System.out.println("站着睡");
}
};
//使用匿名内部类的方法
a.eat();
a.sleep();
//只是看语法,这个匿名内部类是用来实现线程的 - 系统中直接拿过来用的
Thread t = new Thread(){
public void run() {
}
};
}
}