代码的复用
1,组合,继承,代理
为了继承,一般的规则是将所有的数据成员都设置为private,而将所有的方法都设置为public。这样,当不同的包下的类继承该类时,就可以获得该类所有的方法,和包内、包外没有区别。如果不加修饰符,就是限制包内访问,那么包外继承的时候,只能获得public修饰的方法,这样内外的方法不一致,就会出现问题了。当然,特殊情况需要特殊考虑。
try和finally语句:
关键字try表示,下面的块,是所谓的保护区,意味着总要被特殊处理。其中一项特殊处理就是try块无论如何退出,保护区后的finally子句中的代码都会执行。
protected关键字:
对于类用户而而言,protected是privated的,而对于其导出类或同一个包中的类来说是有访问权限的。
向上转型:
“新类是现有类的一种类型”
由导出类转换为基类,是安全的。
2,final 关键字
表示这是无法改变的。
用处:
1),永不改变的编译时变量
2),运行时初始化的值,不希望它被改变。
对final变量定义时,必须对其赋值。
一个既是static又是final的域只占一段不能改变的存储空间,惯例用大写字母加下划线分隔单词。
空白final:可以通过在定义处或者在构造函数中初始化,而在构造函数中初始化可以使不同对象的对象拥有不同的值(比如身份证号,唯一且不能改变)。这样就保证final数据在使用前被初始化且无法改变的特征。
final参数:java可在参数列表中以声明的方式将参数指明为final,意味着你无法在方法中更改参数引用所指的对象。
final类:表明了你不打算继承该类,而且也不允许别人这样做。你对该类的设计并不需要改变,或者是处于安全的考虑,你不希望它有子类。
使用final原因:
1),将方法锁定。
2),效率。
类中的private方法都隐式的指定为final。
3,初始化
总结:
组合和继承相比,更加灵活。优先选择组合,而非继承,除非必要。