设为首页 加入收藏

TOP

C++中组合和继承的概念及意义(二)
2019-05-23 22:14:19 】 浏览:132
Tags:组合 继承 念及 意义
因:

    1,类之间的两种关系为组合和继承,先讲组合是想论述类之间是真的可以存在关系的,存在了组合关系,也就可以存在继承关系;

    2,讲组合关系也是因为在实际的软件开发过程当中,发现很多开发者不会正确的使用继承,往往该用组合关系的地方,他们用的是继承关系,而组合关系对应的是最简单的类之间的关系,也就对应着最简单的代码,我们的整个软件本来就已经很复杂了,我们能简单就简单些,如果能简单的地方弄复杂了,否则一堆的 bug 等着我们;

    3,所以我们要先讲组合关系,再讲继承关系,就想告诉大家,在实际的工程开发里面,我们进行设计的时候,先考虑组合关系,看下组合关系能不能满足我们的需求、能不能描述我们实际的问题,如果可以就用组合关系,因为组合简单,如果不可以用组合关系,则应该看看我们当前面临的问题需要用继承来解决,因为继承肯定的比继承复杂的多的多,不是一个数量级的,这就是为什么先讲组合关系;

   

9,继承关系:父子关系:

 

    1,简单的说继承关系就是父子关系;

    2,惠普电脑是一种特殊电脑,苹果电脑也是一种特殊的电脑;惠普电脑是电脑的一个特化实例,可以说惠普电脑是一种电脑,但绝对不能说电脑是一种惠普电脑(这里赋值兼容性体现出来了,子类对象可以当做父类对象使用,父类对象不可以当做子类对象使用,子类就是一种特殊的父类),这是生活中的常识;

    3,当两个概念之间存在这种特化关系时,其实已经发生了继承关系;惠普电脑一定会有电脑的所有特征(子类拥有父类的所有属性和行为),但是电脑不一定有惠普电脑的特征(子类可以添加父类没有的方法和属性,也可以重写父类的成员函数),因为这种关系是单向的,继承关系必然有一个角色叫做父类,另一个角色叫做子类,子类继承了父类的一切特征;

      

10,面向对象中的继承:

    1,面向对象中的继承和生活中的继承是相似的,也是指的父子关系;

    2,这种父子关系是发生在类之间,发生在类之间的父子关系很明显的就说明了有一个类是父类,而另一个类是子类;

   

11,面向对象中的继承指类之间的父子关系:

    1,子类拥有父类的所有属性和行为;

       1,惠普电脑肯定有父类的所有属性,比如内存、硬盘、CPU、主板,行为包括开机;

    2,子类就是一种特殊的父类;

       1,惠普电脑是一种电脑;

       1,“特殊的”寓意着除了父类的特性外还有自身的特性;

    3,子类对象可以当作父类对象使用;

       1,我工作需要一台电脑,这里的需要的是一个父类的对象,然而我们真正提供的惠普电脑是一个子类的对象;

       2,惠普电脑可以工作,这就是说明了子类对象是可以当做父类对象使用的;

       3,这是很重要的一个技术,面向对象里面的很多技术都与这个技术息息相关;

    4,子类中可以添加父类没有的方法和属性;

       1,儿子要比父亲强大,长江后浪推前浪;

   

12,C++ 中通过下面的方式描述继承关系:

    1,代码示例:

 1 class Parent
 2 {
 3        int mv;
 4            
 5 public:
 6        void method();
 7 };
 8        
 9 class Child : public Parent // 描述继承关系;冒号代表了继承,继承自 Parent 类;
10 {
11        // ...
12 };

      

13,继承初体验编程实验:

 1 #include <iostream>
 2 #include <string>
 3 
 4 using namespace std;
 5 
 6 class Parent
 7 {
 8     int mv;
 9 public:
10     Parent()
11     {
12         cout << "Parent()" << endl;
13         mv = 100;
14     }
15     void method()
16     {
17         cout << "mv = " << mv << endl;
18     }
19 };
20 
21 class Child : public Parent
22 {
23 public:
24     void hello()
25     {
26         cout << "I'm Child calss!" << endl;
27     }
28 };
29 
30 int main()
31 {   
32     Child c;
33     
34     Parent p1 = c;  // 子类对象可以当做父类对象使用;
35     Parent p2;
36     
37     p2 = c;  // 子类对象可以当做父类对象使用;
38     
39     c.hello();
40     c.method();  // mv = 100;
41     
42     return 0;
43 }

    1,子类中继承了父类的成员函数,包括构造函数,意味着子类创建的时候,会调用父类的构造函数,以继承父类中属性的状态;

    2,想要使用一个已经存在的类的时候,我们不用复制粘贴它的代码,可以继承得到已有类的代码,并且还可以添加新的成员;

    3,继承的深层次意义就是代码复用;

   

14,继承重要规则:

    1,子类就是一个特殊的父类;

       1,子类拥有父类的所有特性,所以是父类,子类可以自己添加新的特性,所以特殊;

    2,子类对象可以直接初始化父类对象;

       1,因为子类是一个特殊的父类;

    3,子类对象可以直接赋值给父类对象;

   

15,继承的意义

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇[NOI2006] 网络收费 下一篇C++中前置操作符和后置操作符的重..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目