is-A繼承?Has-A?

教程把is-A和Has-A放在一塊兒,我還覺得java支持簡單的方法能把Has對象的方法導出呢。。java

 

extents  implementsc++

要試一下。ide

不知道狗和汽車爲何老是被選出來舉例。函數

 

package Language;

/**
 *
 * 面向對象接口
 * @author y
 */
public interface IFace2Object {
    String getClassKey();
    Boolean AllowMutilInhert();
}
package Language;

/**
 *
 * 開發語言基類
 * @author y
 */
public abstract class ProgramLanguage {
    public abstract String getMyType();
}
package Language;

/**
 *
 * C語言
 * @author y
 */
public class PL_C extends ProgramLanguage {

    @Override
    public String getMyType() {
        return "C";
    }
    
}
package Language;

/**
 *
 * @author y
 */
public class PL_Cpp extends ProgramLanguage implements IFace2Object {

    @Override
    public String getMyType() {
        return "C++";
    }

    @Override
    public String getClassKey() {
        return "class";
    }

    @Override
    public Boolean AllowMutilInhert() {
        return true;
    }
    
}
public class PL_Java extends ProgramLanguage implements IFace2Object {

    @Override
    public String getMyType() {
        return "Java";
    }

    @Override
    public String getClassKey() {
        return "class";
    }

    @Override
    public Boolean AllowMutilInhert() {
        return false;
    }
    
}

 

練練寫法就好了,就不寫測試代碼了,不必。測試

@Override不知道作什麼用的,先看吧。難道是相似 c++11的override關鍵字?spa

 

Java的方法重寫,沒必要在父類中聲明,反而是隻有final的方法不能被重寫。c++11

Super能夠直接調用父類方法,而沒必要要知道父類名。這頗有用。更改父類沒必要要搜索父類名,在C++中則很煩。code

不過c++ 能夠typedef BaseClassName BaseClass,來簡化。對象

 

函數的重載沒什麼說的,我只好奇,子類重載父類中的函數時, 調用子類的父類函數接口,可否正常調用。C++是不行的,看你的了,java。blog

package Language;

/**
 *
 * @author y
 */
public class PL_Cpp extends PL_C implements IFace2Object {

    public String getMyType(Boolean bCpp){
        return bCpp ? "C++" : "C";
    }

    @Override
    public String getClassKey() {
        return "class";
    }

    @Override
    public Boolean AllowMutilInhert() {
        return true;
    }
    
    public static void main(String[] args){
        PL_Cpp tp = new PL_Cpp();
        String sType = tp.getMyType();
        System.out.println("Cpp Default Type = " + sType);
    }
    
}

輸出:

run:
Cpp Default Type = C
成功構建 (總時間: 0 秒)

 

能夠調用哦。

 

在C++中,對父類非虛函數的重載叫重寫,JAVA彷佛不這麼叫。

JAVA中純虛函數不能實現。

 

接口的繼承也用extends

相關文章
相關標籤/搜索