第五章 继承与派生
2022-10-08技术教程 下载本文 派生 ,第五章 ,继承
目录
基本概念
继承 和派生 是一个概念
当新类(派生类)与已有类(基类)具有相似的特性(包含已有类所有特性),则可以通过继承获得已有类的全部对象。
继承是对原有对象的复用,同时在此基础上进行修改(覆盖)与扩充。
派生类会继承基类的所有成员(private、protected、public),但派生类成员函数无法访问基类的private成员
继承方式: class 派生类名:访问属性 基类名{}
存储空间: 派生类中新声明的成员,其存储空间位于继承的基类成员存储空间之后
派生类成员覆盖基类成员后,成员函数可通过基类名::基类成员名
调用被覆盖的基类成员(一般不会覆盖基类成员变量,而是覆盖成员函数)
继承关系&复合关系
继承逻辑(“是”): 派生类是一种基类(如狗是动物)
复合逻辑(“有”): 如果类a是类b的成员对象,则类b包含类a,类a是类b的一种固有属性或组成部分
class point{
double x,y;
}
class circle{ //不用继承,而采用复合关系
point center;
double r;
}
复合关系的另一种情况:
class master;
class dog{
master *m;
}
class master{
dog *dog[10];
}
protected保护成员
可通过基类成员函数、基类友元函数访问,派生类成员函数可访问当前对象的基类protected
保护成员
派生类的构造函数
创建派生类对象时,先调用基类构造函数对从基类中继承的变量初始化,然后才是调用派生类构造函数;
先构造的后析构
调用基类构造函数的两种方式:
显式调用: 直接在派生类构造函数的初始化列表中调用;
隐式调用: 使用基类空构造函数进行初始化(若没有该函数,则报错)
public继承的赋值兼容性规则
派生类对象可以赋值给基类对象、初始化基类引用;派生类对象地址可以赋值给基类指针
若继承方式改成protected或private,上述规则1不成立
class base{}
class derived:public base{}
base b;
derived d;
b=d;
base &br=b;
base *bp=&b; //bp不能访问属于derived类的部分
derived *dp=(derived*)bp; //强制类型转换,需要保证bp指向derived类
直接基类: 派生类直接继承的基类
间接基类: 直接基类继承的所有基类
声明派生类时,只需声明其直接基类;派生类会自动向上继承其间接基类
构造顺序: 间接基类→直接基类→派生类(析构反之)
《第五章 继承与派生.doc》
下载本文的Word格式文档,以方便收藏与打印。
C++ 继承(二)
多态是一种泛型编程的思想,虚函数是其实现的手段(利用父类的指针指向子类的空间)。好了 , 开始正文->
来一段基本代码:
#include <iostream>
using namespace std;
class CPeop...
2023-10-27编程代码 C. ,二 ,继承
python-多继承构造函数声明问题
背景
有场景分别定义两组逻辑,随后有统一入口做基类属性的整合
其中两组逻辑的积累构造函数定义入参不同
设计类继承图如:
实际的使用方式抽象为[使用] 小节
实际开发过程中遇到问题
先说结论
python 多继承,需...
2023-08-03编程代码 函数 ,构造 ,继承
@property、关联关系、继承、多继承
1.@property使用来修饰属性的,将属性私有化改为公有化,但是可以设置属性条件
格式:
class Person:
def __init__(self,name,age):
self.name = name
self.age = age
@property
def age(self):
...
2023-07-29编程代码 property ,关联关系 ,继承
web—第四章css&第五章
web—第四章css&第五章
终于迎接等待已久的CSS,在没学这个之前,我们只会用一点img,查一点小图片,或者是用style改一下颜色,而且比较麻烦。现在多了个css在文件夹在创建一个css文件很多东西都...
2023-07-29编程代码 Web ,第五章 ,第四章
Python OOP之继承封装多态
面向对象的三大特征
继承
封装
多态
继承
子类可以使用父类定义的内容或者行为
继承的实现
父类,基类,超类,被继承的类,Base Class,Super Class
子类:有继承行为的类
所有类都必须有一个父类
如果没有,则默...
2023-07-29编程代码 多态 ,封装 ,继承
[C++核心编程] 4.6、继承
文章目录
4.6 继承
4.6.1 继承的基本语法
4.6.2 继承方式
4.6.3 继承中的对象模型
4.6.4 继承中构造和析构顺序
4.6.5 继承同名成员处理方式
4.6.6 继承同名静态成员处理方式
4.6.7 多继承语法
4.6.8 菱形继承
4.6...
2023-07-29编程代码 核心 ,继承 ,编程
继承 extends
首先是基础的继承关系,用extend就可以继承。
再者是继承的东西,包括:变量(也包括类变量)、全部非私有的属性和方法(除了父类的构造方法)
注:构造方法
class C{
public C() {
}
}
class Person{
...
2023-07-29编程代码 extends ,继承
java继承基础详解
java继承基础详解
继承是一种由已存在的类型创建一个或多个子类的机制,即在现有类的基础上构建子类。
在java中使用关键字extends表示继承关系。
基本语法结构:
访问控制符 class 子类名 extends 父类名{
...
2023-07-11编程代码 基础 ,继承 ,详解