zoukankan      html  css  js  c++  java
  • C++中的重载隐藏覆盖&&JAVA中的重载覆盖&&多态

    class 类继承默认是private,

    struct 默认继承是public

    C++中的隐藏:

    只要派生类中出现和基类一样的函数名,基类中的函数就会被派生类中的函数给隐藏(如果派生类和基类中的函数名,函数参数列表一样,并且基类函数前面有virtual,那么此种情况是重写)

    eg:

    class A

    {

    public:

             void play(int x, int y){

                      cout <<"in class A"<< x <<" "<< y << endl;

             }

    };

    class B : public A

    {

    public:

             void play(int x)

             {

                      cout <<"in class B"<< x << endl;

             }

    };

    int main()

    {

             B b;

             b.play(2,1);

             return 0;

    }

    因为派生类中隐藏了基类中的两个参数列表的play,所以main中的写法是通不过编译的

    C++中的重写(覆盖):

    基类函数有virtual,派生类和基类函数名字,参数列表一样

    C++重载:

    在同一个类中,函数名相同,参数列表不同

    JAVA中的重载:

    方法名相同,参数列表不一样,返回类型可以不同,不能只改变返回类型

    JAVA中的重写:

    方法名相同,参数列表一样,不能降低方法的方法的存取权限

    java中没有隐藏

    多态:

    基类引用 = 派生类对象

    BASE A=NEW DERIVED();

    A.PLAY();

    JAVA中的多态,基类没有virtual函数

    JAVA 中,派生类的权限不能低于基类,派生类不能抛出比基类更多的异常

    多态还有参数,返回类型

  • 相关阅读:
    AOJ.866 飞越原野 (三维BFS)
    UVA.129 Krypton Factor (搜索+暴力)
    UVA.10986 Fractions Again (经典暴力)
    UVA.10305 Maximum Product (暴力)
    UVA.725 Division (暴力)
    HDU.3342 Legal or Not (拓扑排序 TopSort)
    HDU.2647 Reward(拓扑排序 TopSort)
    13 成都
    15 沈阳
    14 鞍山
  • 原文地址:https://www.cnblogs.com/wuxiangli/p/5970412.html
Copyright © 2011-2022 走看看