当做实参传递,简洁高效
package test;public class Main {public static void main(String[] args) {//当做实参直接传递,简洁高效f1(new IL() {//一次使用@Overridepublic void show() {System.out.println("这是一副名画~~...");}});//传统方法 =>需要专门写一个类f1(new Picture());}//静态方法,形参是接口类型public static void f1(IL il) {il.show();}}//接口interface IL {void show();}//类->实现IL => 编程领域 (硬编码)class Picture implements IL {@Overridepublic void show() {System.out.println("这是一副名画XX...");}}
案例二
需求
- 有一个铃声接口Bell,里面有一个ring方法
- 有一个手机类Cellphone,具有闹钟功能alarmclock,参数是Bell类型
- 测试手机类的闹钟功能,通过匿名内部类(对象)作为参数,打印:懒猪起床了!
- 再传入另一个匿名内部类(对象),打印:小伙伴上课了
实现
```java package test;
public class Main { public static void main(String[] args) { / 1.有一个铃声接口Bell,里面有个ring方法。 2.有一个手机类Cellphone,具有闹钟功能alarmClock,参数是Bell类型 3.测试手机类的闹钟功能,通过匿名内部类(对象)作为参数,打印:懒猪起床了 4.再传入另一个匿名内部类(对象),打印:小伙伴上课了 / CellPhone cellPhone = new CellPhone(); //1. 传递的是实现了 Bell接口的匿名内部类 Main$1 //2. 重写了 ring //3. Bell bell = new Bell() { // @Override // public void ring() { // System.out.println(“懒猪起床了”); // } // }
cellPhone.alarmClock(new Bell() {@Overridepublic void ring() {System.out.println("懒猪起床了");}});cellPhone.alarmClock(new Bell() {@Overridepublic void ring() {System.out.println("小伙伴上课了");}});}
}
interface Bell{ //接口
void ring();//方法
}
class CellPhone{//类
public void alarmClock(Bell bell){//形参是Bell接口类型
System.out.println(bell.getClass());
bell.ring();//动态绑定
}
}
```

