網(wǎng)站首頁 編程語言 正文
一、生活中的例子
組合關(guān)系∶整體與部分的關(guān)系
下面看一個組合關(guān)系的描述代碼:
#include <iostream>
#include <string>
using namespace std;
class Memory
{
public:
Memory()
{
cout << "Memory()" << endl;
}
~Memory()
{
cout << "~Memory()" << endl;
}
};
class Disk
{
public:
Disk()
{
cout << "Disk()" << endl;
}
~Disk()
{
cout << "~Disk()" << endl;
}
};
class CPU
{
public:
CPU()
{
cout << "CPU()" << endl;
}
~CPU()
{
cout << "~CPU()" << endl;
}
};
class MainBoard
{
public:
MainBoard()
{
cout << "MainBoard()" << endl;
}
~MainBoard()
{
cout << "~MainBoard()" << endl;
}
};
class Computer
{
Memory mMem;
Disk mDisk;
CPU mCPU;
MainBoard mMainBoard;
public:
Computer()
{
cout << "Computer()" << endl;
}
void power()
{
cout << "power()" << endl;
}
void reset()
{
cout << "reset()" << endl;
}
~Computer()
{
cout << "~Computer()" << endl;
}
};
int main()
{
Computer c;
return 0;
}
輸出結(jié)果如下:
組合關(guān)系的特點
- 將其它類的對象作為當前類的成員使用
- 當前類的對象與成員對象的生命期相同
- 成員對象在用法上與普通對象完全一致
繼承關(guān)系∶父子關(guān)系
二、驚艷的繼承
面向?qū)ο笾械睦^承指類之間的父子關(guān)系
- 子類擁有父類的所有屬性和行為
- 子類就是一種特殊的父類
- 子類對象可以當作父類對象使用
- 子類中可以添加父類沒有的方法和屬性
C++ 中通過下面的方式描述繼承關(guān)系
下面就來進行繼承的初體驗:
#include <iostream>
#include <string>
using namespace std;
class Parent
{
int mv;
public:
Parent()
{
cout << "Parent()" << endl;
mv = 100;
}
void method()
{
cout << "mv = " << mv << endl;
}
};
class Child : public Parent
{
public:
void hello()
{
cout << "I'm Child calss!" << endl;
}
};
int main()
{
Child c;
c.hello();
c.method();
return 0;
}
輸出結(jié)果如下:
重要規(guī)則:
- 子類就是一個特殊的父類
- 子類對象可以直接初始化父類對象
- 子類對象可以直接賦值給父類對象
三、繼承的意義
繼承是 C++ 中代碼復用的重要手段。通過繼承,可以獲得父類的所有功能,并且可以在子類中重寫已有功能,或者添加新功能。
下面再來看一個繼承的代碼:
#include <iostream>
#include <string>
using namespace std;
class Memory
{
public:
Memory()
{
cout << "Memory()" << endl;
}
~Memory()
{
cout << "~Memory()" << endl;
}
};
class Disk
{
public:
Disk()
{
cout << "Disk()" << endl;
}
~Disk()
{
cout << "~Disk()" << endl;
}
};
class CPU
{
public:
CPU()
{
cout << "CPU()" << endl;
}
~CPU()
{
cout << "~CPU()" << endl;
}
};
class MainBoard
{
public:
MainBoard()
{
cout << "MainBoard()" << endl;
}
~MainBoard()
{
cout << "~MainBoard()" << endl;
}
};
class Computer
{
Memory mMem;
Disk mDisk;
CPU mCPU;
MainBoard mMainBoard;
public:
Computer()
{
cout << "Computer()" << endl;
}
void power()
{
cout << "power()" << endl;
}
void reset()
{
cout << "reset()" << endl;
}
~Computer()
{
cout << "~Computer()" << endl;
}
};
class HPBook : public Computer
{
string mOS;
public:
HPBook()
{
mOS = "Windows 8";
}
void install(string os)
{
mOS = os;
}
void OS()
{
cout << mOS << endl;
}
};
class MacBook : public Computer
{
public:
void OS()
{
cout << "Mac OS" << endl;
}
};
int main()
{
HPBook hp;
hp.power();
hp.install("Ubuntu 16.04 LTS");
hp.OS();
cout << endl;
MacBook mac;
mac.OS();
return 0;
}
輸出結(jié)果如下:
四、小結(jié)
- 繼承是面向?qū)ο笾蓄愔g的一種關(guān)系
- 子類擁有父類的所有屬性和行為
- 子類對象可以當作父類對象使用
- 子類中可以添加父類沒有的方法和屬性
- 繼承是面向?qū)ο笾写a復用的重要手段
原文鏈接:https://blog.csdn.net/weixin_43129713/article/details/124823814
相關(guān)推薦
- 2022-04-26 ASP.NET?Core?MVC中Required與BindRequired用法與區(qū)別介紹_基礎(chǔ)應(yīng)用
- 2022-09-18 Go語言實現(xiàn)文件上傳_Golang
- 2022-04-16 C語言數(shù)據(jù)結(jié)構(gòu)之二叉鏈表創(chuàng)建二叉樹_C 語言
- 2022-11-23 Android開發(fā)Jetpack?Compose元素Modifier特性詳解_Android
- 2022-05-27 python繪制棉棒圖的方法詳解_python
- 2022-02-04 UMP系統(tǒng)設(shè)計了如下機制來保證數(shù)據(jù)安全
- 2022-07-19 react表單處理之 非受控組件
- 2022-09-22 【matlab】常微分方程的數(shù)值解法
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支