1. 概述
面向对象编程(OOP)是一种编程范式,区别于传统的面向过程编程。它通过抽象出类来封装数据和方法,从而提高代码的复用性、可维护性和可扩展性。面向对象编程的三大核心特性是封装、继承和多态。
2. 封装
封装是面向对象编程的基础,它将对象的属性(成员变量)和方法(成员函数)封装到一个类中。封装的好处包括:
- 数据隐藏:通过访问控制(
public
、protected
、private
)来限制对类成员的访问,保护数据不被外部直接修改。 - 代码复用:封装后的类可以在不同的程序中重复使用。
- 易于维护:修改类的内部实现不会影响外部代码。
class Box {
private:
double width; // 私有成员变量
public:
void setWidth(double wid) { // 公有成员函数
width = wid;
}
double getWidth() const {
return width;
}
};
3. 继承
继承是面向对象编程的重要特性,它允许一个类(子类)继承另一个类(父类)的属性和方法。继承的主要目的是提高代码的复用性,并保留类与类之间的关系。
3.1 访问控制
public
继承:父类的public
和protected
成员在子类中保持原有的访问权限。protected
继承:父类的public
和protected
成员在子类中变为protected
。private
继承:父类的public
和protected
成员在子类中变为private
。
class Animal {
public:
void eat() { cout << "Eating..." << endl; }
};
class Dog : public Animal { // public继承
public:
void bark() { cout << "Barking..." << endl; }
};
3.2 注意事项
- 子类不能直接访问父类的
private
成员,但可以通过父类的protected
或public
成员函数间接访问。 - 继承方式不会改变父类成员的原有属性,只是在子类中的访问权限可能发生变化。
4. 多态
多态是指同一个接口可以表现出不同的行为。多态分为静态多态和动态多态:
- 静态多态:在编译时确定,主要通过函数重载和模板实现。