zoukankan      html  css  js  c++  java
  • is-A继承?Has-A?

    教程把is-A和Has-A放在一起,我还以为java支持简单的方法能把Has对象的方法导出呢。。

    extents  implements

    要试一下。

    不知道狗和汽车为什么总是被选出来举例。

    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关键字?

    Java的方法重写,不必在父类中声明,反而是只有final的方法不能被重写。

    Super可以直接调用父类方法,而不必要知道父类名。这很有用。更改父类不必要搜索父类名,在C++中则很烦。

    不过c++ 可以typedef BaseClassName BaseClass,来简化。

    函数的重载没什么说的,我只好奇,子类重载父类中的函数时, 调用子类的父类函数接口,能否正常调用。C++是不行的,看你的了,java。

    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

  • 相关阅读:
    android ART hook
    Bind Enum to ListControl
    注意WPF中绑定使用的是引用类型
    Android开发第2篇
    Android开发第1篇
    Extension method for type
    DB2实用命令记录
    TDD三大定律
    【InstallShield】 为什么卸载后有的文件没有删掉
    GAC write failed when upgrade with InstallShield
  • 原文地址:https://www.cnblogs.com/hailong/p/5071370.html
Copyright © 2011-2022 走看看