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注解可以防止在不想重载时而意外地进行了重载。
还是对这个标记有点迷糊。
分享到:
相关推荐
Java编程思想(第4版)读书笔记by CZFJava编程思想(第4版)读书笔记by CZFJava编程思想(第4版)读书笔记by CZF
基于java编程思想(Thinking in java, TIJ)的教学课件,教学设计请见http://blog.csdn.net/Florianjin
我制作的java编程思想的教学课件,紧跟着“java编程思想教学材料——开端”
很有名的一本书—————Java编程思想【第4版】习题答案
实训项目八:JAVA网络编程(csdn)————程序
基于java编程思想(Thinking in java, TIJ)的教学PPT,教学设计请见http://blog.csdn.net/Florianjin
Java之SSH深入浅出——精简剖析
java8函数式编程(csdn)————程序
Java 基本语法(四)——字串和数组 Java 基本语法(四)——字串和数组
java 面向对象编程(csdn)————程序
非常全面的java教程,包含了java的基础技术,还有数据库,网络,GUI方面的知识,非常好的一个教程
计算机软件开发的Java编程语言及应用——评《Java编程方法论》.pdf
做坦克游戏,学Java编程(四)——添加炮弹类.pdf
小贝程序员生活\课件\java\java人家\Java第四十一——四十二讲总结-设计模式.doc 小贝程序员生活\课件\java\java人家\Java第四十一——四十二讲总结-设计模式.doc 小贝程序员生活\课件\java\java人家\Java第四十一...
——————————————————————————————————————————————
java网络编程——网络版题库程序(主要技术java+socket+多线程+mysql),程序是C/S 版本的,由于服务器端是java写的,所有客户端使用android也是很容易与服务器对接的
《Java 工程师的编程逻辑》——用 java 看计算机世界。