1. 类的复用有两种方法:组合(composition)和继承
组合技术通常用于想在新类中使用现有类的功能而非它的接口这种情形,一般在新类中嵌入一个现有类的private对象。但有时,允许类的用户访问新类中的组合部分是极具意义的。如果成员对象自身都隐藏了具体实现,那么将它声明为public也是安全的。
2. 为了继承,一般的规则是将所有的数据成员都指定为private,将所有的方法指定为protected/public。
3. 编译器仅会在子类的无参构造器中自动调用父类的无参构造器,如果父类没有无参构造器,或者要在子类的含参构造器中调用父类的构造器,就必须用关键字super显式地调用父类构造器。
4. dispose()方法可以将未存于内存之中的东西恢复到对象存在之前的状态。注意清理的顺序与生成的顺序相反,先执行类的所有特定的清理动作,然后调用基类的清理方法。
最好除了内存以外,不要以来垃圾回收器去做任何事。如果需要进行清理,最好是编写自己的清理方法,但不要依赖finalize()
5. 做了个实验,得出父类的private方法会因为子类的同名方法而隐藏,但仍然存在。
class Father {
private void f1() {
System.out.println("Father.f1() is invoked");
}
public void f2() {
f1();
System.out.println("Father.f2() is invoked");
}
}
class Child extends Father {
public void f1() {
System.out.println("Child.f1() is invoked");
}
}
public class TestHiding {
public static void main(String[] args) {
Child c = new Child();
c.f1();
c.f2();
}
}
6. 对于基本类型,final使数值恒定不变;对于对象引用,final使引用恒定不变,但对象本身是可以被修改的。
7. 空白final,字段可以被声明为final而不给定初值,但是必须在每个构造器中对final进行赋值。
8. final 参数
void f(final int i) 这样就不能在f程序块中修改i的值了
9. final 方法
使用final方法的原因有两个:一是把方法锁定,以防被继承类修改;二是效率,将一个方法指明为final,就是同意编辑器将针对该方法的所有调用转为内嵌调用。
类中所有的private方法都隐式地指定为是final的,因此对private方法添加final修饰词没有什么意义。
10. final 类
由于无法被继承,final类中的所有方法都被隐式地定为final,因为无法覆盖它们。

posts - 403, comments - 310, trackbacks - 0, articles - 7
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

2.16 Java notes - Reusing Classes

Posted on 2007-04-22 20:24 ZelluX 阅读(234) 评论(0)  编辑  收藏 所属分类: OOP
2007-02-16 19:03:01
只有注册用户登录后才能发表评论。


网站导航: