匿名类
1. 匿名类是一种定义于方法中的内部类 。
public class Test {
public static void main(String[] args) {
Person boy=new Person(){
public void eat(){
System.out.println(" a boy is eating rice");
}
};
}
}
定义在 main方法中
2.** 匿名类定义在 匿名类对象创建对象的表达式中(new 表达式)**
new Person(){
public void eat(){
System.out.println(" a boy is eating rice");
}
};
3. 匿名类必须实现某个接口(超类是Object类)或者继承某个类,两者只能选择其一。
person抽象类
public abstract class Person {
public abstract void eat();
}
匿名类继承了Person抽象类实现了里面的方法
Person boy=new Person(){
public void eat(){
System.out.println(" a boy is eating rice");
}
};
}
匿名类的语法
new <父类或者接口名> (<参数列表>) {
成员定义
} ;
注意点:
- 匿名类不能有自定定义的构造方法,编译系统自动根据(<参数列表>)列表调用超类中相应的构造方法
- 父类或者接口名 只是一个标识。表名匿名类需要实现的类或者接口。new 后面不是构造器
- 注意括号后面的分号不可省略
匿名类的特点
-
匿名内部类顾名思义就是没有名字的内部类。
-
因为没有名字,所以匿名内部类只可以使用一次。
-
匿名内部类常用来简化代码的编写。
-
使用内部类有一个前提条件,必须继承父类或实现一个接口。
-
匿名内部类常常用于多线程。