面向对象编程(通常称为 OOP)是一种通过使用对象将问题分解为更小问题来解决复杂问题的方法。在面向对象编程之前,程序是用过程语言编写的,它们只是一长串指令。另一方面,OOP 就是创建可以交互的对象,这使得在 OOP 中开发程序变得更容易,因为我们可以理解它们之间的关系。
面向对象编程(OOP)
在面向对象编程中,我们使用类和对象编写程序,利用 OOP 的特征,如抽象,封装,继承和多态。
类和对象
类就像数据成员和函数的蓝图,对象是类的实例。例如,假设我们有一个类 Car
,它有数据成员(变量),如speed
,weight
,price
,和函数,如gearChange()
,slowDown()
,brake()
等。现在让我们说我创建了一个名为FordFigo
的类的对象,它使用这些数据成员和函数,并为它们提供自己的值。同样,我们可以使用蓝图(类)创建任意数量的对象。
//Class name is Car
class Car
{
//Data members
char name[20];
int speed;
int weight;
public:
//Functions
void brake(){
}
void slowDown(){
}
};
int main()
{
//ford is an object
Car ford;
}
抽象
抽象是隐藏用户不相关细节的过程。例如,当您发送短信时,您只需键入消息,选择联系人并单击发送,手机会显示消息已发送,单击发送时背景中实际发生的情况对您是隐藏的,因为它对你不相关。
封装
封装是将数据和函数组合成像胶囊这样的单个单元的过程。这是为了避免从类外部访问私有数据成员。为了实现封装,我们将类的所有数据成员设为私有并创建公共函数,使用它们我们可以从这些数据成员获取值或为这些数据成员设置值。
继承
继承是一个特性,子类的对象使用该特性获取父类的属性。
#include <iostream>
using namespace std;
class ParentClass {
//data member
public:
int var1 =100;
};
class ChildClass: public ParentClass {
public:
int var2 = 500;
};
int main(void) {
ChildClass obj;
}
现在这个对象obj
可以使用ParentClass
的属性(例如变量var1
)。
多态
函数重载和运算符重载是多态的例子。多态是一种在不同情况下对象表现不同的特性。
在函数重载中,我们可以有多个函数,具有相同名称但不同数量,类型或顺序的参数。
多态实例
#include <iostream>
using namespace std;
class Sum {
public:
int add(int num1,int num2){
return num1 + num2;
}
int add(int num1, int num2, int num3){
return num1 + num2 + num3;
}
};
int main(void) {
//Object of class Sum
Sum obj;
//This will call the second add function
cout<<obj.add(10, 20, 30)<<endl;
//This will call the first add function
cout<<obj.add(11, 22);
return 0;
}
输出:
60
33