Java编程思想第四版——第二十一天

本文探讨了Java中组合与继承的概念,特别是在代理模式中的应用。文章详细介绍了如何通过组合来实现类的设计,以及如何在Java中正确地使用继承与组合。此外,还讨论了在Java中清理资源的最佳实践,以及名称屏蔽的问题。

2012-05-04

163-170/913

 

Java编程思想第四版——第二十一天

 

7.3 代理

Java没有提供对代理的直接支持,这是继承与组合之间的中庸之道。讲一个成员对象置于所要构造的类中(就像组合),但与此同时在新类中暴露了该成员对象的所有方法(就像继承)。

 

7.4 结合使用组合和继承

同时使用组合和继承是很常见的事。

虽然编译器强制初始化基类,并且要求在构造器起始处就要这么做,但是它并不监督必须将成员对象也初始化,这一点需要自己时刻注意。

 

7.4.1 确保正确清理

注意对基类清理方法和成员对象清理方法的调用顺序,以防某个子对象依赖于另一个子对象情形的发生。一般而言,所采用的形式应该与C++编译器在其析构函数上所施加的形式相同:首先,执行类的所有特定的清理动作,其顺序同生成顺序相反(通常这就要求基类元素仍旧存活),然后,调用基类的清理方法。

 

许多情况下,清理并不是问题,仅需让垃圾回收器完成该动作就行。但当必须亲自处理清理时,就得多做努力并多加小心。

最好的办法是除了内存以外,不能依赖垃圾回收器去做任何事,如果需要进行清理,最好是编写自己的清理方法,但不要使用finalize()。

 

7.4.2 名称屏蔽

如果java的基类拥有某个已被多次重载的方法名称,那么在导出类中重新定义该方法名称并不会屏蔽其在基类中的任何版本(这一点与C++不同)。因此,无论是在该层或者它的基类中对方法进行定义,重载机制都可以正常工作。

Java SE5新增加了@Override注解,不是关键字,但是可以把它当作关键字使用。当想要覆写某个方法时,可以选择添加这个注解,在不留心重载而非覆写了该方法时,编译器就会生成一条错误消息。

@Override注解可以防止在不想重载时而意外地进行了重载。

还是对这个标记有点迷糊。

转载于:https://www.cnblogs.com/53jin/archive/2012/05/04/2482541.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值