C++ (初始面向对象之继承,实现继承,组合,修饰权限)

发布于:2025-04-18 ⋅ 阅读:(29) ⋅ 点赞:(0)

初始面向对象之继承

根据面向对象的编程思路,我们可以把共性抽象出来封装成类,然后让不同的角色去继承这些类,从而避免大量重复代码的编写

实现继承

继承机制是面向对象程序设计中使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,添加功能,这样产生的新类叫做子类(派生类),被继承的类型称为父类(基类)

格式

class 派生类名:继承方式  基类名1,继承方式 基类名2,....

{

        派生类成员;

};

继承方式有: public,protrcted,private

 class Houyi:public Hero,pulbic Ranger{
        public:
                Houyi(const string &name,int distance,int looks);
                ~Houyi();
                void show() const;
        private:
                int looks; // 颜值
}

此时的Houyi这个类继承了Hero和Ranger两个类,拥有了Hero和Ranger的所有成员

构造函数的调用顺序:先按照继承时的顺序挨个调用基类的构造函数,然后调用派生类的构造函数

析构函数调用顺序和构造函数调用顺序相反

某个类的私有成员属性只能在该类中使用, 如果想在派生类中使用,就必须对外提供一个公共的方法。

组合

组合是对现有对象进行拼装即组合产生新的具有更复杂功能的类,组合强调的是整体与部分的关系,它们之间有明显的“has a”关系

class 类名{

    public :
           成员函数;
    private :
            类1 对象1;
            类2 对象2;

};

构造函数的调用顺序:

1.按照继承时的顺序挨个调用基类的构造函数

2.调用对象成员的构造函数

3.调用派生类的构造函数

继承的优缺点

继承是一种 “is-a” 的关系,例如 Student 继承 Person,说明 Student 是 Person。

优点: 方法复用: 子类可以复用父类的方法,并在需要时重写(override)父类的方法,方便地实现对父类的扩展。

缺点: 细节可见性: 父类的内部细节对子类是可见的,违反了信息隐藏原则。

编译时绑定: 子类继承的父类方法在编译时确定,无法在运行时改变父类方法的行为。

高耦合: 如果父类的方法更改(例如增加参数),子类必须进行相应的修改,导致子类与父类高度耦合,违反了低耦合原则。

组合的优缺点

组合是一种 “has-a” 或 “contains-a” 的关系,例如一个 Car 包含一个 Engine 对象。

在类设计时,通过将一 个类的对象作为另一个类的成员变量来实现组合。

优点:

低耦合: 当前对象与包含对象的内部细节分离,只通过其公开接口进行交互,降低耦合度。

运行时动态绑定: 当前对象可以在运行时动态绑定所包含的对象,可通过 set 方法进行对象赋值。

灵活性高: 可以将不同的对象组合在一起,从而灵活地设计系统。

缺点:

对象数量增多: 组合可能会产生大量对象,增加内存使用和管理复杂性。

接口设计复杂: 为了组合多个对象,需要仔细设计和定义接口,以确保类之间的协同工作。

修饰权限

类成员的修饰权限

继承方式


网站公告

今日签到

点亮在社区的每一天
去签到