匿名内部类使用方式
抽象类是没有类对象的,因为抽象类的成员抽象方法没有方法体,创建类对象没有意义,
所以通常实现抽象类的抽象方法是通过继承重写了方法,再调用子类的类对象实现
而匿名内部类实现抽象方法更为简单,下面通过一个简单的例子使用三种方法演示一下匿名内部类的用法
/**
* 定义一个抽象类,其中有一个 study 抽象方法
*/
abstract class Student {
abstract void study();
}
/**
* CollegeStudent 类 继承 学生类,重写了 study 方法
*/
class CollegeStudent extends Student {
@Override
void study() {
System.out.println("继承抽象类方法");
}
}
/**
* 不通过继承使用匿名内部类实现学生抽象类的抽象方法
* /
public class Demo2 {
public static void main(String[] args) {
/*
1.通过类对象调用重写的抽象类的抽象方法,实现方法功能
*/
CollegeStudent stu = new CollegeStudent();
stu.study();
/*
2.使用匿名内部类创建抽象类的类对象,通过类对象调用实现方法功能
*/
Student stu1 = new Student() {
@Override
void study() {
System.out.println("匿名内部类创建类对象实现抽象类的方法");
}
};
stu1.study();
/*
3.匿名内部类直接实现抽象方法功能
此方法节约内存,最快,
*/
new Student() {
@Override
void study() {
System.out.println("匿名内部类直接实现抽象类方法");
}
}.study();
/*
4.匿名内部类的匿名对象,直接作为方法的参数
*/
study(new Student() {
@Override
void study() {
System.out.println("匿名内部类的匿名对象作为方法的参数直接输出");
}
});
}
static void study(Student student) {
student.study();
}
}
- 通过这个简单的例子展示匿名内部类的使用方法,希望对你有帮助