面向对象编程(Object-Oriented Programming, OOP)
面向对象编程是一种编程范式,它使用对象和基于类的结构来设计软件。OOP的主要特点是封装、继承和多态。
1. 封装(Encapsulation)
- 概念:封装是将数据(属性)和操作这些数据的方法(行为)捆绑在一起的机制。它隐藏了对象的内部状态和复杂性,只暴露出一个清晰、简洁的接口。
- 语法:在类中使用访问修饰符(如
private
和public
)来控制成员变量和成员函数的访问权限。 - 特点:提高了代码的安全性和可维护性,因为对象的内部实现可以自由更改,而不会影响到使用该对象的代码。
示例代码:
class BankAccount {
private:
double balance; // 私有成员变量,外部无法直接访问
public:
BankAccount(double initialBalance) : balance(initialBalance) {}
void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
double getBalance() const {
return balance;
}
};
int main() {
BankAccount account(1000);
account.deposit(500);
std::cout << "Balance: " << account.getBalance() << std::endl;
return 0;
}
2. 继承(Inheritance)
- 概念:继承是一种创建新类(派生类)的机制,新类继承了现有类(基类)的属性和方法,并能添加或修改功能。
- 语法:使用
class Derived : public Base
来声明派生类继承基类。 - 特点:支持代码重用,派生类可以扩展或修改基类的行为。
示例代码:
class Animal {
public:
void eat() {
std::cout << "Eating" << std::endl;
}
};
class Dog : public Animal {
public:
void bark() {
std::cout << "Barking" << std::endl;
}
};
int main() {
Dog myDog;
myDog.eat(); // 继承自Animal类
myDog.bark();
return 0;
}
3. 多态(Polymorphism)
- 概念:多态是指允许不同类的对象对同一消息做出响应的能力。这意味着同一个接口可以被不同的对象以不同的方式实现。
- 语法:通过虚函数(使用
virtual
关键字)实现多态。派生类可以重写(override)基类中的虚函数。 - 特点:多态使得代码更加灵活和通用,能够处理不同类型的对象,而不需要知道对象的具体类型。
示例代码:
class Shape {
public:
virtual void draw() const = 0; // 纯虚函数
};
class Circle : public Shape {
public:
void draw() const override {
std::cout << "Drawing a circle" << std::endl;
}
};
class Square : public Shape {
public:
void draw() const override {
std::cout << "Drawing a square" << std::endl;
}
};
int main() {
Shape* shape1 = new Circle();
Shape* shape2 = new Square();
shape1->draw(); // 调用Circle的draw()
shape2->draw(); // 调用Square的draw()
delete shape1;
delete shape2;
return 0;
}
封装、继承和多态是面向对象编程的基石,它们共同提供了一种强大的方式来构建复杂和可扩展的软件系统。
作者:
hwaityd
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。