匿名内部类--实现接口或一个类
匿名内部类特点
- 匿名内部类没有类名,它也就不能定义出构造器,所以它没有自己的构造器。
- 匿名内部类是隐式地继承了一个特定的类,或者隐式地实现了一个特定的接口。
- 匿名内部类无法定义静态成员和静态方法。
- 匿名内部类不能用
public,protected,private,static修饰。 - 匿名内部类只能创建一个实例,它本身就是是一个实例。
匿名内部类的格式: 必须是类或者接口
格式:
new 类名/接口名(){
重写抽象方法
}
-
如果是类的话,相当于子类的实现类
-
Animal是一个父类,eat是他的抽象类 -
创建之后,只是相当于创建子类对象对抽象方法进行了重新,并不会立即执行
-
第一种调用方法
-
//整体就等效于:是Animal父类的子类对象 new Animal(){ @Override public void eat() { System.out.println("狗吃肉"); } }.eat(); //通过子类对象调用方法 -
第二种调用方法 用父类的引用作接收了子类对象——多态的体现形式
-
Animal a = new Animal(){ @Override public void eat() { System.out.println("狗吃肉"); } } a.eat();
-
-
如果是接口的话,相当于接口的实现类
-
接口不能被实例化,只能通过多态的形式,让子类实例化
-
Inter是一个接口名 -
new Inter({ @Override public void method() i system.out.println("我是重写后的method方法"); } }.method();
-

浙公网安备 33010602011771号