复用类

1.为了继承,一般的规则是:将所有数据成员都指定为private,所有的方法指定为public

2.在继承过程中,需要先声明“新类和旧类相似”,用关键字“extend”实现。这么做,会得到基类中的所有域和方法

3.在继承关系中,如果导出类和基类有相同的方法,但你想在导出类中调用从基类继承来的方法,可以用关键字“super”来表示超类,用表达式“super.functionname()”来调用基类版本的functionname();并且,如果没有默认的基类构造器,或者想用一个带参数的基类构造器,就必须用关键字“super”显式地编写调用基类构造器的语句,并且配上适当的参数列表

 

class Game1 {
    Game1(int i){
        System.out.println("Game1 costructor");
    }
}
class BoardGame extends Game1{
    BoardGame(int i){
        super(i);
        System.out.println("BoardGame costructor");
    }
}

public class Chess extends BoardGame{
    Chess(){
        super(11);
        System.out.println("Chess costructor");
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Chess xChess = new Chess();
    }

}
/*output:
Game1 costructor
BoardGame costructor
Chess costructor*/

 4."is-a(是一个)"的关系用继承来表达,"has-a(有一个)"的关系用组合来表达

“向上转型”即由导出类转成基类,是一个从较专用的类型转换为较通用的类型的过程

在OOP中,尽管多次强调“继承”,但应慎用这种技术。“组合”是在新类中嵌入某个对象,让其实现所需功能,但新用户看到的只是为新类定义的接口,而非所嵌入对象的接口,成员对象对自身都隐藏了具体实现,这种做法是安全的。因此,如果需要从新类向基类进行向上转型,则“继承”是必要的,否则,最好使用“组合”。

posted @ 2016-04-20 11:44  Code_Bear  阅读(641)  评论(0编辑  收藏  举报