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

相关文章
相关标签/搜索