Java学习笔记85——匿名内部类
interface A{ b(); c(); }
class B implements A{ b(){..} c(){..}
}
A a = new B();
A a = new A(){ b(){..} c(){..} };
匿名内部类:
就是内部类的一个简化写法。
存在匿名内部类的前提:
要存在一个类或者是一个接口,类可以是具体的类也可以是抽象类
new 类名或者接口名(){重写方法;}
本质上: 是一个继承了这个类或者实现了这个接口的子类匿名对象
interface Inter{
public abstract void show();
public abstract void show2();
}
class Outer7{
public void fun(){
new Inter(){
@Override
public void show() {
System.out.println("这是show方法");
}
@Override
public void show2() {
System.out.println("这是show2方法");
}
}.show();
new Inter(){
@Override
public void show() {
System.out.println("这是第二个匿名内部类的show方法");
}
@Override
public void show2() {
System.out.println("这是第二个匿名内部类的show2方法");
}
}.show2();
//想一想,如果接口中的方法很多的时候,每次调用一个方法,都需要new一下,要写的内容都重复
//了。怎么改进?
System.out.println("====================================");
//多态的形式,这里叫做接口多态
Inter i = new Inter(){
@Override
public void show() {
System.out.println("这是第二个匿名内部类的show方法");
}
@Override
public void show2() {
System.out.println("这是第二个匿名内部类的show2方法");
}
};
i.show();
i.show2();
}
}
public class InnerClassDemo7 {
public static void main(String[] args) {
Outer7 outer7 = new Outer7();
outer7.fun();
}
}

浙公网安备 33010602011771号