复用类 其二
来源:互联网 发布:su建模软件 编辑:程序博客网 时间:2024/04/29 11:39
复用类 其二
接着上一天的复用类的内容
在组合与继承之间选择
组合和继承都允许在新的类中放置子对象。组合是显示地做。而继承则是隐式地做。
组合技术通常用于想在新类中使用现有类的功能而非它的接口。
一般情况下,我们既希望在新类中嵌入某个对象,来实现该对象的一些功能;又希望新类的用户看到的只是为新类所定义的接口,而不像其展示所嵌入对象的接口。为了实现这种效果,我们需要将新类中嵌入的现有类对象声明为private。
但有时,为了让客户端程序员更好的去使用一些类,尤其是当类的组装也是问题的一部分时,我们可以使用public。
protected关键字
允许任何继承于此类的导出类,或是其他任何位于同一个包内的类去访问。
尽管可以创建protected域,最好的方式还是将域保持为private;你应当一直保留“更改底层实现”的权利,然后通过protected方法来控制类的继承者的访问权限。
向上转型
将一个导出类的对象的引用,传递给他的基类中的一个方法并实现,这种将导出类引用转换为基类引用的动作被称为向上转型。
final
不想改变一个数据,一般情况下出于两个理由: 设计 或是 效率。
1.final数据
显然,将一个数据声明为final类型,表明我们希望该数据在恒定不变的,是一个常量。
在Java中,这类常量必须是基本数据类型,并且以关键字final表示。再对这个常量进行定义的时候,必须对其进行赋值。
编译器遇到这种常量时,会将其带入任何可能用到它的计算式中,从而可以减轻一些运行时的负担。
对于对象引用,final使引用恒定不变。一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象。然而,对象其自身却是可以被修改的。
既是static又是final的域一般用全大写表示。
即使一个数据被声明为final,编译时也可能不知道他的值,比如 final int i = rand.nextInt(20);
空白final:
Java允许生成空白final,即一个域被声明为final,同时有没有被赋予初值。无论什么情况,编译器都确保空白final在使用前必须被初始化。但是,空白final在关键字final的使用上提供了更大的灵活性。
比如,一个类中的final域就可以做到根据对象而有所不同,却又保持了其恒定不变的特性。
2.final方法
如今,使用final方法的原因主要是为了确保在继承中方法的行为能够不被改变,并且不会被覆盖。
final与private关键字
类中所有的private方法都被隐式地指定为final。
3.final类
当将一个类直接定义为final时,任何人都不能修改它,同时该类也永远不应该有子类。
对于final类的域,它们未必是final的。而对于final类的方法,都隐含的指定为是final的,因为你无法覆盖他们。
- 复用类 其二
- 11/20/2009其二
- 人生十年-其二
- Android之googleMap(其二)
- Android之googleMap(其二)
- 惨痛教训其二
- Struts2国际化其二
- GCD其二各种队列
- 论诗五首·其二
- Markdown使用其二
- 初识多线程 (其二)
- 迷津叹 其二
- 计算机专业导论其二
- Java内存分析 其二
- 《感遇·其二》 作者:张九龄
- VisualNet项目实际应用其二
- 游戏架构其二:游戏通信
- Cocos2dx UI系列控件其二
- tensorflow 学习资料收集
- CSS样式重置
- 1课:单片机简叙
- 【分治计数】BZOJ4237 稻草人
- ICP配准
- 复用类 其二
- freemarker日期转换
- JavaSE_8系列博客——Java语言的特性(六)--泛型(5)--泛型的使用
- spark学习部分笔记
- javaweb 网页
- 并查集的使用(3):连通图
- Cookie和Session以及两者区别
- (hdu 2089)不要62(数位DP)
- 19-特殊工具和技术