《Java匿名内部类实践》

阅读: 评论:0

《Java匿名内部类实践》

《Java匿名内部类实践》

Java匿名内部类的最佳实践:

当做实参直接传递,简洁高效。

public class InnerClassExercise01 {public static void main(String[] args) {//当做实参直接传递,简洁高效。//匿名内部类本身就是一个对象f1(new IL(){@Overridepublic void show() {System.out.println("匿名内部类的show方法...");}});  //要加分号,因为 f1 是一个方法//传统方法f1(new Car());}//公共静态方法,形参是IL形式,调用接口的show方法//注意:虽然接口不是实例化对象,但是可以创造编译类型public static void f1(IL il){il.show();}
}//接口
interface IL{//接口中的一个方法void show();
}//类 - 》 实现IL
class Car implements IL{@Overridepublic void show() {System.out.println("传统方法的show方法...");}
}

传统方法 被称为编程领域的硬编码。

而且匿名内部类修改show方法只会影响它自己的显示。而传统方法在Car类中修改show方法,会影响到它所创建的所有的对象。

练习作业:

1)有一个铃声接口Bell,里面有一个ring方法。

2)有一个手机类Cellphone,具有闹钟功能alarmclock,参数是Bell类型

3)测试手机类的闹钟功能,通过匿名内部类作为参数,打印“起床了”。

4)在传入另一个匿名内部类对象,打印“上课了”。

代码如下:

public class InnerClassExercise02 {public static void main(String[] args) {Cellphone cellphone = new Cellphone();//1.传递的是一个实现了 Bell 接口的匿名内部类//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接口类型bell.ring(); //动态绑定 , 根据 运行类型 }
}

本文发布于:2024-01-29 17:12:30,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170651955516944.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:部类   Java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23