day_08_继承

二十一、继承(Inheritance)

注释:inheritance - - - - - - n.继承/ in’heritәns /

1、继承概念

  通过一种机制表达类型之间的共性和特性的方式,利用已有的数据类型定义新的数据类型,这种机制称为继承;

eg:
  人类:姓名、年龄、吃饭、睡觉
  学生类:姓名、年龄、吃饭、睡觉、学号、学习
  教师类:姓名、年龄、吃饭、睡觉、工资、授课

  人类:姓名、年龄、吃饭、睡觉(基类/父类)
  学生类继承人类:学号、学习(派生类/子类)
  教师类继承人类:工资、授课

2、基本语法

class 子类:继承方式1 基类1,继承方式2 基类2..{
    ...
};

继承方式:
  a. 公有继承:public
  b. 私有继承:private
  c. 保护继承:protected

eg:

class Human{...}
class Student:public Human{
    // Student类继承了Human类
    // 在Student类中,存在一份Human类中的成员
};

3、公有继承的特性(public)

1)子类对象可以当做基类对象来使用
  子类对象会继承基类属性和行为,通过子类对象可以访问基类中的成员,如同是基类对象在访问它们;
  子类对象中包含基类的部分称为:“基类子对象”;

2)向上造型(重点
  将子类类型的指针或引用转换为基类类型的指针或引用;这种操作性缩小的类型转换,在编译器看来是安全的,所以可以隐式完成转换。

3)向下造型
  将基类类型的指针或引用转换为子类类型的指针或引用;这种操作性放大的类型转换,在编译器看来是危险的,因此必须显示转换。

向上/向下造型

4)子类继承基类的成员
  a. 子类可以直接访问基类中的公有成员和保护成员,就如同它们是子类自己的成员一样;
  b. 基类的私有成员在子类中虽然存在但是不可见,因此无法直接访问,但是可以通过基类提供公有的或保护的接口函数来间接访问;
  c. 子类无法继承基类的构造函数和析构函数,但是子类可以在构造函数的初始化表中指明基类部分的初始化方式;

class 子类: public 基类{
    子类(..):基类(..){}
};

5)子类隐藏基类中成员
  a. 子类和基类中定义同名的成员函数,因为作用域不同,不会构成关系,而是一种隐藏关系;
  b. 如果需要子类中访问所隐藏的基类成员函数,可以通过作用域限定方式,显示的指明;

4、继承方式和访问控制属性

1)三种访问控制属性:影响访问该成员的位置

访问控制限定符访问控制属性内部访问子类访问外部访问友元访问
public公有成员okokokok
protected保护成员okoknook
private私有成员oknonook

2)三种继承方式:影响通过子类访问基类中的成员的可访问性

基类中公有子类中保护子类中私有子类中
公有成员公有成员保护成员私有成员
保护成员保护成员保护成员私有成员
私有成员私有成员私有成员私有成员
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值