【Thinking in Java】组合、继承和代理的区别
- 三者的定义:
- 组合:在新类中new 另外一个类的对象,以添加该对象的特性。
- 继承:从基类继承得到子类,获得基类的特性。
- 代理:在代理类中创建某功能的类,调用类的一些方法以获得该类的部分特性。
- 使用场合:
- 组合:各部件之间没什么关系,只需要组合即可。like组装电脑,需要new CPU(),new RAM(),new Disk()……
演示代码如下:
1 public class Computer { 2 public Computer() { 3 CPU cpu=new CPU(); 4 RAM ram=new RAM(); 5 Disk disk=new Disk(); 6 } 7 } 8 class CPU{ } 9 class RAM{ } 10 class Disk{ }
- 继承:子类需要具有父类的功能,各子类之间有所差异。like Shape类作为基类,子类有Rectangle,CirCle,Triangle……代码不写了,大家都经常用。
- 代理:飞机控制类,我不想暴露太多飞机控制的功能,只需部分前进左右转的控制(而不需要暴露发射导弹功能)。通过在代理类中new一个飞机控制对象,然后在方法中添加飞机控制类的各个需要暴露的功能。
演示代码如下:
1 public class PlaneDelegation{ 2 private PlaneControl planeControl; //private外部不可访问 3 /* 4 * 飞行员权限代理类,普通飞行员不可以开火 5 */ 6 PlaneDelegation(){ 7 planeControl=new PlaneControl(); 8 } 9 public void speed(){ 10 planeControl.speed(); 11 } 12 public void left(){ 13 planeControl.left(); 14 } 15 public void right(){ 16 planeControl.right(); 17 } 18 } 19 20 final class PlaneControl {//final表示不可继承,控制器都能继承那还得了。。 21 protected void speed() {} 22 protected void fire() {} 23 protected void left() {} 24 protected void right() {} 25 }
分类:
Thinking In Java
标签:
Java
posted on 2015-04-13 21:57 DarkHorse_pxf 阅读(1319) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?