C++封装继承多态理解

面向对象的三个基本特征: 封装 、继承 、多态

简单概括三大特性作用:
    封装是为了代码模块化和增加安全性
    继承是为了重用和扩展现有的代码模块
    多态是为了接口复用
    
封装:
    保护数据成员,不让类以外的程序直接访问或者修改类的成员,只能通过其成员对应方法访问(即数据封装)
    隐藏方法实现的具体细节,仅仅提供接口, 内容修改不影响外部调用(即方法封装)    
    
继承:
    三种继承方式:public、protected、private。
    继承的目的: 重用代码,一个类B继承另一个类A,则B就继承了A中申明的成员以及函数
    派生的目的: 代码扩展,继承自一个类然后添加自己的属性和方法则实现代码的扩展
缺陷:
    父类变化了子类必须变化 增加了耦合性
                
多态:
    接口的复用,一个接口多种实现
    用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数
C++多态性是通过虚函数来实现的, 虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖或者重写
函数重载为允许多个不同名称的函数,这些函数函数列表不同或者函数个数不同或者两者都不同
    
编译时多态:主要指方法的重载 (在编译器编译期间就可以确定函数的调用地址,并产生代码,是静态的)
运行时多态:通过虚函数实现     (在运行时确定的调用地址)

C++中,实现多态有以下方法:虚函数、抽象类(至少包含一个纯虚函数 不能创建实例)、重载、覆盖、模板。    
    
继承时的构造函数:
(1)基类的构造函数不能被继承,派生类中需要声明自己的构造函数
(2)声明构造函数时 只需要对本类新增成员进行初始化,对继承基类成员的初始化 自动调用基类构造函数完成
(3)派生类的构造函数需要给基类的构造函数传递参数
(4)单一继承是构造函数为
    派生类名::派生类名(基类所需要的形参, 本类所需要的形参):基类名(参数){本类成员初始化赋值}
(5)当基类中声明有默认形式的构造函数或未声明构造函数时 派生类构造函数可以不向基类传递参数
(6)若基类中未声明构造函数,派生类中也可以不声明 全采用缺省形式构造函数
(7)    当基类中声明有带行参的构造函数时,派生类也应该声明带形参数构造函数,并将参数传递给基类构造函数
(8)构造函数的调用顺序
    a 调用基类构造函数, 调用顺序按照他们被继承是声明的顺序(从左至右)
    b 调用成员对象的构造函数,调用顺序按照他们在类的声明顺序
    c 派生类的构造函数体中的类容
继承时的析构函数:    
(1)基类的析构函数不能继承 派生类自行声明
(2)声明方法与一般(无继承)类的析构函数相同
(3)不需要显示的调用基类的析构函数 系统会自动隐士调用
(4)析构函数的调用次序和构造函数相反
    a 派生类中成员指针的析构 派生类自己析构
    b 派生类成员对象析构
    c 基类析构 从右到左顺序
        
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值