面向对象的意义在于:
- 将日常生活中习惯的思维方式引入程序设计中
- 将需求中的慨念直观的映射到解决方案中
- 以模块为中心构建可复用的软件系统
- 提高软件产品的可维护性和可扩展性
其中类和对象是面向对象中的两个基本概念
- 类: 指的一类事物, 里面包括不同对象实体, 是一个抽象的概念, 比如: 程序语言
- 对象: 指的是类里的具体实体, 比如: 程序语言 (类)->java(对象)C#(对象) 等
类
- 类用于抽象的描述一类事物所共有的属性和行为
比如:
电脑, 都拥有 CPU / 主板 / 内存 / 硬盘(共有属性), 并且可以运行程序(共有行为)
对象
- 对象指类里的具体事物, 并且拥有描述类中的一切共有属性和行为
比如:
神舟电脑 G50-F5 型号, CPU 是酷睿 i5, 内存 8G, 硬盘 1TB 等
神舟电脑 G60-F7 型号, CPU 是酷睿 i7, 内存 16G, 硬盘 1TB+128GB(固态硬盘)等
总结:
类下面不一定存在实际对象, 比如: 恐龙(类), 对象已经灭绝, 没有一个对象
类的对象数目不确定, 比如: 电脑(类), 该对象数目不确定, 美国总统(类), 该对象当今只有一个
类不一定都来源于现实生活.
类不是独立的,
类与类之间也存在关系
, 比如: 电脑 (类) 包括了 CPU(类), 主板 (类) 等,
对象不一定只属于一个类, 比如: 二哈(对象), 既属于哺乳动物(类), 又属于犬科(类)
类与类之间的关系
继承
-
父类和子类之间具有继承关系
, 比如: 车 (父类) 包括了汽车(子类)
可以这么理解, 汽车一定是车, 但是车不一定是汽车
-
继承的子类拥有父类的所有属性和行为
组合
- 一些类的存在必须依赖于其它的类, 这种关系叫组合, 比如: 电脑 (类) 包括了 CPU(类)等
- 组合的类在某个局部上由其它的类组成
继承实例
以现实生活中的生物类为例:
如上图
, 在 C++ 中, 又如何通过程序来表达出来呢?
在 C++ 中, 通过 struct 表达类, 通过: 表达继承, 所以可以将上图改进为:
又通过变量表达属性
,
通过函数表达行为
.
最终将生活中的例子体现在 C++ 代码中:
- #include <stdio.h>
- struct Biology { // 生物类
- bool living;
- };
- struct Animal : Biology { // 动物类继承于: 生物类
- bool movable;
- void findFood() { }
- };
- struct Plant : Biology { // 植物类继承于: 生物类
- bool growable;
- };
- struct Beast : Animal { // 禽兽继承于: 动物类
- void sleep() { }
- };
- struct Human : Animal { // 人类继承于: 动物类
- void sleep() { }
- void work() { }
- };
- int main()
- {
- return 0;
- }
未完待续, 下章学习类与封装
来源: https://www.cnblogs.com/lifexy/p/8463881.html