详细介绍:C++ 面向对象四大特性:面试深度解析

前言

面向对象编程(Object-Oriented Programming, OOP)是 C++ 的核心。在技术面试中,对 OOP 四大基本特性——封装 (Encapsulation)继承 (Inheritance)多态 (Polymorphism)抽象 (Abstraction)的理解和运用是必考点。本篇文档旨在援助你系统、清晰地掌握这些概念,并能用代码自如地向面试官展示你的理解。

1. 封装 (Encapsulation)

核心定义

封装是将数据(属性)和操作这些数据的方法(函数)捆绑到一个独立的单元(即 类 (Class))中。同时,它通过控制访问权限(public, private, protected)来隐藏对象的内部实现细节,只对外暴露必要的接口。

面试官想听到什么:封装的核心是“捆绑”和“隐藏”。它不仅是把材料和方法放在一起,更重要的是保护数据,防止外部代码随意篡改,保证了数据的安全性和完整性。

为什么应该封装?

  • 安全性 (Security):隐藏内部数据,防止非法访问和修改。

  • 模块化 (Modularity):将复杂的系统分解为一个个独立的、可管理的类,降低了系统的复杂度。

  • 灵活性 (Flexibility):类的内部构建可以随时修改,只要对外暴露的公共接口不变,就不会影响到其他使用该类的代码。

代码示例

在这个例子中,BankAccount 类封装了 accountNumberbalance。外部代码无法直接访问 balance,只能通过 depositwithdraw 这两个公共接口来安全地操作余额。

#include
#include
// BankAccount 类将账户数据和操作封装在一起
class BankAccount {
private:
// 数据成员被设为私有,外部无法直接访问
std::string accountNumber;
double balance;
public:
// 构造函数,用于初始化对象
BankAccount(std::string num, double initialBalance) {
accountNumber = num;
// 保证初始余额是有效的
if (initialBalance >= 0) {
balance = initialBalance;
} else {
balance = 0.0;
}
}
// 公共成员函数(接口),用于与外部交互
void deposit(double amount) {
if (amount > 0) {
balance += amount;
std::cout << "存款成功. 当前余额: " << balance << std::endl;
posted @ 2025-08-15 09:10  yfceshi  阅读(18)  评论(0)    收藏  举报