继承_派生

继承:
1、子类拥有父类的所有成员变量(属性)和成员函数(方法)
2、子类是一种特殊的父类
3、子类对象可以当父类对象使用
4、子类可以拥有父类没有的方法和属性

继承方式一般都按照public继承;

单个类的访问(属性和方法)控制
public:类内,类外均可用
private:类内
protected:类内,继承的子类内部

派生类的访问控制:
继承方式:public继承,子类对父类的访问属性不变
protected:父类public变成子类内部的protected
private:全部转化为子类内部的private属性

赋值兼容性原则:
1、父类指针或引用 指向父类或子类(多态)
2、可以用子类 初始化 父类(子类是一种特殊的父类)

继承中构造函数析构函数的调用规则:
构造:先父类后子类
析构:先子类后父类
在子类中使用构造函数初始化列表,先初始化父类的成员,后初始化自己成员。析构逆序。
child(int a, int b, int c):parent(a, b)
{
  this->c = c;
}

继承和组合(子类中定义了父类的对象)的混合,构造析构调用方法
子类构造函数不仅需要初始化自己的成员变量还要初始化父类的成员变量,
此时,需要使用构造函数初始化列表,调用父类的构造函数来初始化父类的成员变量

构造函数初始化列表:组合,继承中使用
组合:子类中有父类的对象
继承:在子类构造函数中初始化父类成员

调用顺序,先调用父类构造函数,如果父类还有父类(老祖宗),
就先从祖先开始,依次往下调用,直到子类时,先调用子类中组合对象构造函数再调用子类自己构造函数。
析构时顺序相反。

继承中同名成员变量处理方法:
1、子类成员变量 与 父类成员变量同名时 子类依然从父类继承同名成员变量
2、通过 域作用符 区别子类和父类的同名成员变量(子类中使用父类的域作用符)
3、同名成员存储在内存中不同位置。
child.b = 1; //默认使用子类自己的b
child.parent::b = 2; //子类调用父类的b(使用了父类的域作用符)

派生类中的static关键字
父类中的static成员,满足派生类的访问控制
静态成员变量 类外定义初始化,提醒编译器分配内存

类中不声明,默认为私有。构造函数声明为一般公有(单例除外)(结构体中默认为公有)

继承是二义性:A派生B和C两个类;D继承自B和C,D中对象调用A的成员b时不知道是通过B还是通过C来调用。
解决这个问题,需要采用虚继承
class B:vitual class A
{};
class C:vitual class A
{};
class D:public B, public C
{};
但B和C都有成员变量k时,D的对象无法直接访问k,虚继承也无法解决,但可以使用父类作用域去访问。

时间: 2024-10-12 21:41:05

继承_派生的相关文章

Python基础(16)_面向对象程序设计(类、继承、派生、组合、接口)

一.面向过程程序设计与面向对象程序设计 面向过程的程序设计:核心是过程,过程就解决问题的步骤,基于该思想设计程序就像是在设计一条流水线,是一种机械式的思维方式 优点:复杂的问题的简单化,流程化 缺点:扩展性差 面向对象的程序设计:核心是对象,对象是特征(变量)与技能(函数)的结合体,是一种上帝式的思维方式 优点:解决了程序的扩展性 缺点:可控性差 二.类和对象 以游戏举例,基于面向对象设计一个款游戏:英雄联盟,每个玩家选一个英雄,每个英雄都有自己的特征和和技能,特征即数据属性,技能即方法属性,特

Python基础- 类和对象(使用、继承、派生、组合、接口、多态、封装、property、staticmethod、classmethod、反射、slots、上下文管理协议、元类)

标签: python对象 2017-07-01 16:28 79人阅读 评论(0) 收藏 举报  分类: python(11)  版权声明:本文为广大朋友交流学习,如有纰漏望不吝赐教,若存在版权侵犯请及时与我联系 目录(?)[+] 一.初识类和对象 在python3中类型就是类 先定义类在产生相对应的对象,也就是现有了概念再有了实体 class Garen: camp = 'Demacia' def attack(self): print('attack') 1.如何使用类 在python3:

Python(面向对象编程——2 继承、派生、组合、抽象类)

继承与派生 ''' 继承:属于 组合:包含 一. 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Super class). 继承有什么好处?最大的好处是子类获得了父类的全部功能. 继承:是基于抽象的结果,通过编程语言去实现它,肯定是先经历抽象这个过程,才能通过继承的方式去表达出抽象的结构. 二. 组合指的是,在一个类中以另外一个类的对象作为数据属性,称

C++_练习—继承_公有继承

公有继承 公有继承 public: 当类的继承方式为公有继承时,基类的公有和保护成员的访问属性在派生类中  不变,而基类的私有成员不可访问. 即基类的公有成员和保护成员被继承到派生类中仍作为派生类的公有成员和保护成员.派生类的其他成员可以直接访问它们.无  论派生类的成员还是派生类的对象都无法访问基类的私有成员. 公有继承:当公有继承时,基类的公有变成派生类的公有,保护变成派生类的保护,私有不可以直接被派生类访问,可通过公有和保护间接访问! 1 #include <iostream> 2

程序设计实习MOOC / 继承和派生——编程作业 第五周程序填空题1

描述 写一个MyString 类,使得下面程序的输出结果是: 1. abcd-efgh-abcd- 2. abcd- 3. 4. abcd-efgh- 5. efgh- 6. c 7. abcd- 8. ijAl- 9. ijAl-mnop 10. qrst-abcd- 11. abcd-qrst-abcd- uvw xyz about big me take abcd qrst-abcd- 要 求:MyString类必须是从C++的标准类string类派生而来.提示1:如果将程序中所有 "My

C++继承与派生

2017-06-25 23:00:59 c++中的继承和派生是面向对象编程中的一个重要内容,通过继承可以实现代码的复用,同时继承也是实现多态性的基础. 一.c++继承的基本形式 class 派生类名:继承方式 基类名,继承方式 基类名 {}: 继承方式主要有三种,public ,private ,protected. 缺省条件下是private继承,三种中public继承用的最多,不同的继承方式决定了子类中从基类继承过来的成员的访问属性. public继承: 基类的public,protecte

四.OC基础--1.文档安装和方法重载,2.self和super&amp;static,3.继承和派生,4.实例变量修饰符 ,5.私有变量&amp;私有方法,6.description方法

四.OC基础--1.文档安装和方法重载, 1. 在线安装 xcode-> 系统偏好设置->DownLoads->Doucument->下载 2. 离线安装 百度xcode文档 3. 方法重载: 是指在一个类中定义多个同名的方法 在OC中没有重载 2.self和super&static, self和super: 1. self理解: 谁调用当前方法, self就代表谁. 比如: 在对象方法中,self代表的是对象, 因为只有对象才可以调用对象方法 在类方法中, self代表的

模块的封装之C语言类的继承和派生

[交流][微知识]模块的封装(二):C语言的继承和派生 在模块的封装(一):C语言的封装中,我们介绍了如何使用C语言的结构体来实现一个类的封装,并通过掩码结构体的方式实 现了类成员的保护.这一部分,我们将 在此的基础上介绍C语言类的继承和派生.其实继承和派生是一个动作的两种不同角度的表达 .当我们继承了一个基类而创造了一个新类时,派生的概念就诞生了.派生当然是从基类派生的.派生出来的类当然是继承了基类的 东西.继承和派生不是一对好基友,他们根本就是一个动作的两种不同的说法,强调动作的起始点的时候

3.继承与派生

1.类的继承与派生 - 类的继承:从已有类产生新类的过程.原有类称为基类或父类,产生的新类称为派生类或子类. - 派生类语法: class 派生类名:继承方式   基类名1,继承方式 基类名2,... { } - 单继承和多继承:基类个数决定 - 直接基类,间接基类 - 继承方式规定了如何访问从基类继承的成员 - 派生类成员是指除了从基类继承的所有成员之外,新增加的数据和函数成员 - 派生类生成过程:吸收基类成员->改造基类成员->添加新的成员,构造函数和析构函数都不被继承 2.访问控制 -