一、概述
使用类但不破坏现有程序代码。实现方法:1.组合:只需在新类中产生现有类的对象。2.继承:按照现有类的类型来创建新类。
二、组合语法
toString()方法:每一个非基本类型的对象都有一个,当编译器需要一个String而你只有一个对象时该方法被调用。
三、继承语法
创建一个类时总是在继承,除非明确从其他类继承否则就是隐式的从Java标准根类Object进行继承。
使用关键字extends实现继承。使用super表示超类,当前类就是从超类中继承来的,super.scrub()表示调用基类的scrub()方法。
初始化基类:在构造器中调用基类构造器执行初始化。
四、代理
代理是组合和继承之间的中庸之道,使用代理时可以拥有更多的控制力,因为我们可以选择只提供在成员对象中的方法的某个子集。
五、结合使用组合和继承
1.确保正确清理:最好编写自己的清理方法,不要用finalize()
2.名称屏蔽:如果基类拥有某个已被多次重载的方法名称,则在导出类中重新定义该方法名称不会屏蔽其在基类中的任何版本
六、在组合和继承之间选择
组合和继承都允许在新类中放置子对象,组合是显式的,继承是隐式的。
组合技术通常用于想在新类中使用现有类的功能而非接口的情况。
继承和组合都能从现有类型生成新类型。组合一般是将现有类型作为新类型底层实现的一部分来加以调用,继承复用的是接口。
七、protected关键字
对于类用户而言是private的,对于任何继承与此类的导出类或其他任何位于同一个包内的类来说是可以访问的(提供包内访问权限)。
八、向上转型
由导出类转到基类,因为是从较专用类型向较通用类型转换,所以向上转型是安全的。
判断使用继承还是组合的最有效方法是是否需要从子类向基类向上转型,若需要则需使用继承。
598

被折叠的 条评论
为什么被折叠?



