Chapter 10 类的继承(上篇)

发布时间:2024年01月15日

目的:了解三种继承方式,并清楚其中的差别

🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃

10.1 继承与派生的概念

1.面向对象技术强调软件的可重用性,所以C++语言提供了类的继承机制,解决了软件重用问题

3.类的继承的定义:一个新类从已有的类那里获得其已有的特性的现象,在C++中所谓的“继承“就是一个已存在的的类的基础上建立一个新的类

3.类的派生:从已有的类产生一个新的子类,称为类的派生

a:派生类继承了基类的所有数据成员和成员函数,其可以对成员做必要的增加或调整,且一个基类可以派生出多个派生类,每个派生类又可以作为基类在派生出新的派生类,一次基类和派生类是相对而言的,一代一代派生下去,即形成了类的继承层次结构

b:派生的分类:多级派生+单级派生

4.注意??:

a:类的继承的角度是从派生类到基类

b:类的派生的角度是从基类到派生

c:这个已存在的类称为“基类(base class)”或“父类(father class)”,新建立的类称为“派生类(derived class)”或“子类(son class)”

d:基类与派生类总的就是一句话:派生类是基类的具体化,而基类则是派生类的抽象,这句话也体现类与对象的关系

🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃

10.2 派生类的声明方式

1.形式: class 派生类名:[继承方式] 基类名

? ? ? ? ? ?{

? ? ? ? ? ? ? ? ? 派生类新增加成员

? ? ? ? ? ? };

class Student : public Student
{
   public:
     void display_1()
     cout<<"true"<<endl;
}

2.继承方式包括:public(公用的)、private(私有的)、protected(受保护的),继承方式是可选的,如果不写此项,则默认为private(私有的)

🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃

10.3 派生类的构成

1.派生类的说明:

a:做基类的类必须要定义,其原因显而易见,每个派生都包含并且都可以访问其基类的成员,为了使用这些成员,派生类必须知道它们是谁

b:如果要声明,但不实现一个派生类,则只要声明类即可,不用加继承方式和基类的类型

class Derived:public Buse;//??,在这种只声明不实现的情况是错误的
class Dervied;//正确的

c:派生类有两部分构成:继承+定义新的成员

d:友元关系、构造函数、析构函数是不能继承的

e:基类定义了静态成员,每个静态成员只有一个派生和基类都可使用

f:静态成员为public,派生类可用的,但若是private,则派生类是不可以使用的,后年我们也会提到访问属性,则在这里不过多追叙了

2.派生类的3个工作部分

a:从基类接收成员,派生类把基类(除友元关系、构造函数、析构函数)没有选择的都继承过来了

b:调整从基类接收的成员,无选择的接收基类成员是不可避免的,但是程序员可以对这些成员的属性进行某些调整,利用访问属性来间接达到不想接收的目的

c:在声明派生类时新增加的成员,这很重要,体现了派生类对基类功能的拓展,这一部分后面也有知识点会补充的

🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃🎃

10.4 派生类成员的访问属性

1.基类成员和友元访问基类成员

2.派生类的成员和友元访问派生类自己新增加的成员

3.基类的成员函数访问派生类的成员,基类是不可以直接访问派生类的,不过可以通过虚函数实现

4.派生类的成员函数访问基类的成员,基类的私有成员派生类是不可访问的

5.在派生类外访问基类成员

6.三种方式继承的访问属性

7.4种访问属性:

a:公用的,派生类内类外都可以访问

b:受保护的,派生类可以访问,派生类外不可以访问,其下一层的派生类可以访问

c:私有的,派生类内可以访问,派生类外不能访问

d:不可访问的,派生类内外都不能访问

注意??:无论哪一种继承方式,在派生类中是不能访问基类的私有成员,私有成员只能被本类的成员函数所访问,毕竟派生类与基类不是同一类的

共同学习,欢迎指正!

文章来源:https://blog.csdn.net/2301_80903601/article/details/135593903
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。