精华内容
下载资源
问答
  • //一个类可以从多个基类中派生。在派生类由多个基类派生的多重继承模式中, //基类是用基类表语法成分来说明的,多重继承的语法与单一继承很类似, //只需要在声明继承的多个类之间加上逗号来分隔 class B1 { public:...

    #include <iostream>
    using namespace std;
    //多重继承
    //一个类可以从多个基类中派生。在派生类由多个基类派生的多重继承模式中,
    //基类是用基类表语法成分来说明的,多重继承的语法与单一继承很类似,
    //只需要在声明继承的多个类之间加上逗号来分隔
    class B1
    {
    public:
        void output();
    };

    class B2
    {
    public:
        void output();
    };

    void B1::output()
    {
        cout << "call the class B1" << endl;
    }
    void B2::output()
    {
        cout << "call the class B2" << endl;
    }

    class A:public B1,public B2
    {
    public:
        void show();
    };

    void A::show()
    {
        cout<<"call the class A"<<endl;
    }

    int main()
    {
        std::cout << "Hello World!\r\n";
        A a;
        a.output();//该语句编译的时候会报错
        a.show();
        return 0;
    }

    派生类A是从基类B1和基类B2多重继承而来,二基类B1和B2各有一个output()函数,当类A对象a要调用a.output()时,编译器无法确定用户需要的到底是哪一个基类的output函数,而产生以上错误。

    #include <iostream>
    using namespace std;
    //多重继承
    //一个类可以从多个基类中派生。在派生类由多个基类派生的多重继承模式中,
    //基类是用基类表语法成分来说明的,多重继承的语法与单一继承很类似,
    //只需要在声明继承的多个类之间加上逗号来分隔
    class B1
    {
    public:
        void output1();
    };

    class B2
    {
    public:
        void output2();
    };

    void B1::output1()
    {
        cout << "call the class B1" << endl;
    }
    void B2::output2()
    {
        cout << "call the class B2" << endl;
    }

    class A:public B1,public B2
    {
    public:
        void show();
    };

    void A::show()
    {
        cout<<"call the class A"<<endl;
    }

    int main()
    {
        std::cout << "Hello World!\r\n";
        A a;
        a.output1();
        a.show();
        return 0;
    }

    展开全文
  • 派生类继承基类的成员

    千次阅读 2014-10-28 10:02:09
    这个过程,称为继承的,涉及一个基类和派生:派生类继承基类的成员,在其上可以添加自己的成员。 例如,让我们想象一系列的来描述多边形两种:矩形和三角形。这两个多边形具有某些共同的特性,如需计算面积的...

    C++中的类可以扩展,创建新的类的基类的特性保留。这个过程称为继承的涉及一个基类和派生类派生类继承基类的成员在其上可以添加自己的成员

    例如,让我们想象一系列的类来描述多边形两种:矩形和三角形。这两个多边形具有某些共同的特性计算面积价值观:他们都可以简单地用一个高度和宽度描述基地)

    这可能是在类的世界代表从一个多边形我们会得到另外两个

    多边形的类将包含两种类型的多边形的普通成员。在我们的案例:宽度和高度。矩形和三角形派生类是不同的从一种类型的多边形其他特定功能

    这是从其他类继承所有的基类成员的访问。这意味着,如果一个基类的成员包括我们派生一个类它与另一个成员称为B派生类将包含两个成员和成员B.

    两个类的继承关系是派生类的声明。派生类定义使用以下语法

    derived_class_name公共base_class_name

    { /*……*/}

    在derived_class_name是派生类和base_class_name名称是类的名字,它的基础。公共访问说明符可以由其他访问说明符任何人取代(protected或private)。基类继承的成员访问说明符最接近水平的限制:一个更容易继承成员这个水平相反,与同等更严格的访问级别在派生类中保持他们的限制级别的成员


    展开全文
  • 继承基类

    2014-09-08 06:59:56
    在继承课的介绍,我们提到一个使用派生的...你可以继承基类的功能,然后添加新的功能,修改现有的功能,或隐藏的功能,你不想。在本课中,我们将采取仔细看看这是怎么做的。 首先,让我们用一个简单的基类开始:

    在继承课的介绍,我们提到一个使用派生类的最大好处就是重用已写代码的能力。你可以继承基类的功能,然后添加新的功能,修改现有的功能,或隐藏的功能,你不想。在本课中我们将采取仔细看看这是怎么做的

    首先,让我们用一个简单的基类开始

    #include <iostream>
    using namespace std;
    
    class Base
    {
    protected:
        int m_nValue;
    
    public:
        Base(int nValue)
            : m_nValue(nValue)
        {
        }
    
        void Identify() { cout << "I am a Base" << endl; }
    };

    现在,让我们创建一个派生类继承的基础。因为我们希望得到m_nvalue时的值派生对象的实例化我们会使派生类的构造函数调用构造函数初始化列表中的基础
    class Derived: public Base
    {
    public:
        Derived(int nValue)
            :Base(nValue)
        {
        }
    };


    展开全文
  • 1.封装的封装可以隐藏的实现细节,迫使用户只能通过方法去访问数据,这样就可以增强程序的安全性。接下来演示未使用封装可能出现的问题,如例所示。在例中,运行结果输出的成绩为-68,在程序中不会有任何问题,...

    1.封装

    类的封装可以隐藏类的实现细节,迫使用户只能通过方法去访问数据,这样就可以增强程序的安全性。接下来演示未使用封装可能出现的问题,如例所示。

    在例中,运行结果输出的成绩为-68,在程序中不会有任何问题,但在现实生活中明显是不合理的。为了避免这种不合理的情况,就需要用到封装,即不让使用者随意修改类的内部属性。

    在定义类时,可以将属性定义为私有属性,这样外界就不能随意修改。Python中通过在属性名前加两个下画线来表明私有属性,如例所示。

    在例中,self.name为公有属性,self.__score为私有属性。第8行试图修改私有属性的值。从程序运行结果可看出,私有属性的值并没有发生变化。

    当属性设置为私有属性后,经常需要提供设置或获取属性值的两个方法供外界使用,如例所示。

    此外,私有属性在类外不能直接访问,但程序在测试或调试环境中,可以通过“对象名._类名”的方式在类外访问,如例所示。

    2.继承

    在自然界中,继承这个概念非常普遍,例如:熊猫宝宝继承了熊猫爸爸和熊猫妈妈的特性,它有着圆圆的脸颊、大大的黑眼圈、胖嘟嘟的身体,人们不会把它错认为是狒狒。在程序设计中,继承是面向对象的另一大特征,它用于描述类的所属关系,多个类通过继承形成一个关系体系。

    单一继承

    单一继承是指生成的派生类只有一个基类,如学生与教师都继承自人,如图所示。

    单一继承由于只有一个基类,继承关系比较简单,操作比较容易,因此使用相对较多,其语法格式如下:

    上述代码表示派生类继承自基类,派生类可以使用基类的所有公有成员,也可以定义新的属性和方法,从而完成对基类的扩展。注意Python中所有的类都继承自object类,第10章中出现的类省略了object。

    接下来演示如何定义单一继承,如例所示。

    大家可能会有疑问,派生类的构造方法名与基类的构造方法名相同,创建派生类实例对象如何调用构造方法,接下来演示这种情形,如例所示。

    如果派生类的构造函数中需要添加参数,则可以在派生类的构造方法中调用基类的构造方法,如例所示。

    在例中,第10行通过super()方法调用基类的构造方法,该行也可以写成如下两行中的任意一种形式,具体如下所示:

    如果派生类定义的属性和方法与基类的属性和方法同名,则派生类实例对象调用派生类中定义的属性和方法,如例所示。

    另外,需特别注意,基类的私有属性和方法是不会被派生类继承的。因此,派生类不能访问基类的私有成员,如例所示。

    多重继承

    在现实生活中,在职研究生既是一名学生,又是一名职员。在职研究生同时具有学生和职员的特征,这种关系应用在面向对象程序设计上就是用多重继承来实现的,如图所示。

    多重继承指派生类可以同时继承多个基类,其语法格式如下:

    上述代码表示派生类继承自基类1与基类2。

    接下来演示如何定义多重继承,如例所示。

    在多重继承中,如果基类存在同名的方法,Python按照继承顺序从左到右在基类中搜索方法,如例所示。

    如果将上例中第13行代码中Student与Staff交换位置,具体如下所示:

    再次运行程序,则运行结果如图所示。

    3.多态

    Python中加法运算符可以作用于两个整数,也可以作用于字符串,具体如下所示:

    上述代码中,加法运算符对于不同类型对象执行不同的操作,这就是多态。在程序中,多态是指基类的同一个方法在不同派生类对象中具有不同的表现和行为,当调用该方法时,程序会根据对象选择合适的方法,如例所示。

    展开全文
  • 继承基类,派生

    2016-08-18 06:49:00
    在 C++中,继承机制通过类的派生实现,被继承的类称为基类或父类;在继承类的基础上创建的新类称为派生类或...一个派生类可以只有一个基类,称为单继承;也可以同时有多个基类,称为多继承。派生类也可作为基类继...
  • 参考链接:http://www.yiichina.com/topic/6518 模块内的基础控制器可以对... 比如你的back模块需要对管理员的登录状态进行检测,这检测工作就可以放在BackBaseController中,back中的其他控制器都继承BackBase...
  • C++ 多继承类基类

    2019-10-25 20:30:32
    1.多继承派生类有多个基类或者虚基类,同一个类不能多次作为某个派生类的直接基类,但可以作为一个派生类的间接基类; class QUEUE: STACK, STACK{/*…*/}; //错误,出现两次 class Q: S {S d;/*…*/}; //正确:采用...
  • 派生基类继承的过程可以分为三步骤:吸收基类成员、修改基类成员和添加新成员。吸收基类成员就是代码复用的过程,修改基类成员和添加新成员实现的是对原有代码的扩展,而代码的复用和扩展是继承与派生的主要...
  • 概念:创建派生对象时,程序首先调用基类的构造函数,然后再调用派生的构造函数。...派生构造函数总是调用一个基类构造函数。可以使用初始化列表语法指明要使用的基类构造函数,否则使用默认的基类构造函数。
  • 在项目B中定义派生ComA继承自Base,B中有一个按钮,点击按钮后调用Base中的sendMsg信号发送信息。 方式1中方法是可行的。但是方法2中槽函数却收不到信息。但是从A向B中发送的信号在方式2中是可行的。方式1采用的...
  • 当子类只有一个父类时称为单继承,当子类含有多个父类时称为多继承。如果基类A直接参与了派生B的派生过程,那么A称为直接基类基类基类称为间接基类。2、如何定义子类定义子类时,需要指明其父类,及对父类的...
  • C++类继承(1.基类与派生

    千次阅读 2017-09-12 14:22:05
    类继承是OOP的三个基本概念之一(数据...1.基类与派生为了说明类继承,我们首先需要一个基类。假设现在有一个Student,记录学生在班上的编号以及姓名:#ifndef STUDENT_H_ #define STUDENT_H_ #include using st
  • 一个B类继承于A,或称从A派生B。这样的话,A成为基类(父类)或者说A是B的超级,简称超类, B成为派生(子类)。派生中的成员,包含两大部分: 1. 一是从基类继承过来的,一是自己增加的成员。 ...
  • 在多重继承中,可以构建一个继承关系图,其中相同的基类是多个派生的一部分。下图显示了此类关系图。 单个基类的多个实例 在该图中,显示了 CollectibleString 和 CollectibleSortable 的组件的图形化表示形式。...
  • 继承类基类成员的访问权限

    千次阅读 2017-03-23 08:15:41
    c++中的继承就是现有的中建立一个新的, 现有的成为基类继承出来的新称为派生可以简单的理解为:基类为父亲,派生为儿子。 继承的方式有三种,分别是  公有继承(public) ; 私有继承(private) ;...
  • 派生继承基类的接口,所以我们经常会把一个基类派生出的多个派生当作同一个类别。在某些函数或者中,我们可能希望只支持某一类别的输入,即只支持某个类型或者这个类型的派生,此时就需要判断输入类型是否...
  • 讲讲了继承与派生的概念和派生的声明,继承与派生是编程... 根据前面所讲,派生基类继承的过程可以分为三步骤:吸收基类成员、修改基类成员和添加新成员。吸收基类成员就是代码复用的过程,修改基类成员
  • 由于派生类对象的构造,要先构造基类部分,而且派生类可以继承基类的private成员,但是却不能访问,因此可以把基类的构造函数实现成private私有的构造函数,那么任何一个派生类在继承这个基类的时候,都会由于无法...
  • 每日一贴,今天的内容关键字为基类 1.试验目标和要求: 此试验用两个单元的时光完成,是一个综合性的试验,要求编写的程序涉及到C++的许多知识点,如的定义,动态分配...1.定义一个基类MyArray,基类中可以寄...
  • 单重继承——一个派生类最多只能有一个基类 多重继承——一个派生类可以有多个基类 class 类名: 继承方式 基类1,继承方式 基类2,…. {….}; 派生类同时继承多个基类的成员,更好的软件重用 可能会有大量的二义性,多...
  • 使用以下语法声明一个类从另一个类继承: class DerivedClass:BaseClass { ... } 派生类DerivedClass将从BaseClass继承基类中的方法会成为派生类的一部分.在C#中,一个类最多只允许从一个其他的类派生; 除非将...
  • // 可以一个派生的对象的地址赋给其基类的指针变量,但只能通过这个指针访问派生中由基类继承来的隐藏对象, //不能访问派生中的新成员。同样也不能反过来做。 #include using namespace std; class B { ...
  • 【项目3】在下面的定义中,自行车的虚基类为车辆,机动车的虚基类也为车辆,摩托车基类为自行车和机动车之间均为公有继承。 (1)根据上面各类间关系的描述,补全下面程序段中空缺的代码...
  • 继承和派生01 继承和派生的概念继承: 在定义一个新的 B 时,如果该与某个已有的 A 相似(指的是 B 拥有 A 的全部特点),那么就可以把 A 作为一个基类,而把B作为基类的一个派生(也称子类)。派生: ...
  • 建空数组只要$andy = array();新建空对像却要$andy = new Andy; 而且还得先有个class Andy{}或者得2行$andy = array();...我们可以这么理解:stdClass是PHP的一个基类,所有的类几乎都继承个类,所以任何时候
  • C++继承概念辨析虚函数...动态绑定是C++指针或引用的特性,当编译器遇到一个基类指针或引用时,并不直接确定其类型,而是在运行时根据其具体指向来调用对应的函数。 为什么基类指针和引用可以指向派生呢?因...
  •  如何以公有方式从一个类派生出另一个类; 保护访问; 构造函数成员初始化列表; 向上和向下强制转换; 虚成员函数; 早期(静态)联编与晚期(动态)联编; 抽象基类; 纯虚函数; 何时及如何使用公有继承类库...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,788
精华内容 3,915
关键字:

一个类可以继承一个基类