测试类
package cn.meituan.anonymous;
/* 测试类
/*匿名内部类
* 前提:存在一个类或者接口,
* 就是将子类和创建子类对象的过程合二为一了
*
*
*作用;如果接口的实现类只用一次接口(用完就不再用了,这样占内存不建议,可以用匿名内部类避免)
* 匿名内部类格式:
* 接口名/抽象类名 父类变量 = new 接口名/类名(){
* 重写方法
* }
* MyInterface my = new MyInterface() {//类似于多态的方式进行创建 并对接口的抽象方法进行重写
public void method1() {
System.out.println("接口实现类");
}
*
*/
public class Test {
public static void main(String[] args) {
// 快捷键自动生成匿名内部类 :new 接口名 alt+/生成 记住
// 匿名内部类就是不用再创建接口实现类(少创建一个实现类)
MyInterface my = new MyInterface() {//类似于多态的方式进行创建 并对接口的抽象方法进行重写
// 这里的new MyInterface()相当于接口的 实现类对象(并不是一个接口对象),因为不知到接口的实现类名字所以用接口名进行代替,
// 并且对接口中的抽象方法进行重写。
@Override
public void method1() {
System.out.println("接口实现类");
}
@Override
public void method() {
System.out.println("接口实现类1");
}
};
//调用方法
my.method();
my.method1();
/*
* MyInterfaceImpl myInterfaceImpl = new MyInterfaceImpl();
* //正常实现接口是用(接口不能创建对象)创建接口实现类对象
*调用方法
* myInterfaceImpl.method(); myInterfaceImpl.method1();
* // 快捷键自动生成匿名内部类 :new 接口名 alt+/生成 记住
*/
MyInterface my1 = new MyInterface() {//类似于多态的方式进行创建 并对接口的抽象方法进行重写
// new MyInterface()相当于接口的 实现类对象,因为不知到接口的实现类名字所以用接口名进行代替,
// 并且对接口中的抽象方法进行重写。
@Override
public void method1() {
System.out.println("第二个接口实现类");
}
@Override
public void method() {
System.out.println("第二个接口实现类1");
}
};
//调用方法
my1.method();
my1.method1();
}
}
抽象类
package cn.meituan.anonymous;
public interface MyInterface {
//抽象方法
void method();
void method1();
}