当做实参传递,简洁高效

  1. package test;
  2. public class Main {
  3. public static void main(String[] args) {
  4. //当做实参直接传递,简洁高效
  5. f1(new IL() {//一次使用
  6. @Override
  7. public void show() {
  8. System.out.println("这是一副名画~~...");
  9. }
  10. });
  11. //传统方法 =>需要专门写一个类
  12. f1(new Picture());
  13. }
  14. //静态方法,形参是接口类型
  15. public static void f1(IL il) {
  16. il.show();
  17. }
  18. }
  19. //接口
  20. interface IL {
  21. void show();
  22. }
  23. //类->实现IL => 编程领域 (硬编码)
  24. class Picture implements IL {
  25. @Override
  26. public void show() {
  27. System.out.println("这是一副名画XX...");
  28. }
  29. }

image.png

案例二

需求

  1. 有一个铃声接口Bell,里面有一个ring方法
  2. 有一个手机类Cellphone,具有闹钟功能alarmclock,参数是Bell类型
  3. 测试手机类的闹钟功能,通过匿名内部类(对象)作为参数,打印:懒猪起床了!
  4. 再传入另一个匿名内部类(对象),打印:小伙伴上课了

    实现

    ```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(“懒猪起床了”); // } // }

  1. cellPhone.alarmClock(new Bell() {
  2. @Override
  3. public void ring() {
  4. System.out.println("懒猪起床了");
  5. }
  6. });
  7. cellPhone.alarmClock(new Bell() {
  8. @Override
  9. public void ring() {
  10. System.out.println("小伙伴上课了");
  11. }
  12. });
  13. }

} interface Bell{ //接口 void ring();//方法 } class CellPhone{//类 public void alarmClock(Bell bell){//形参是Bell接口类型 System.out.println(bell.getClass()); bell.ring();//动态绑定 } } ``` image.png