📅  最后修改于: 2023-12-03 14:59:45.185000             🧑  作者: Mango
C++是一个基于对象的编程语言,OOP意味着面向对象编程。对象是指一种数据结构,它具有状态和行为。在C++中,对象是一个具有属性和方法的实体。
类是用来描述对象的蓝图。它定义了对象的属性和方法。C++中的类可以包含公有(public)、私有(private)和保护(protected)方法和属性。这些方法和属性对外部世界可以是可见的(public),可以是不可见的(private),也可以只有继承的类可以访问(protected)。
class Rectangle {
public:
double width;
double height;
void setValues(double w, double h) {
width = w;
height = h;
}
double getArea() {
return width * height;
}
};
对象是一个类的实例。例如,如果有一个类Rectangle,那么一个Rectangle对象将具有宽度和高度,可以使用setValues()方法来设置这些值,并且使用getArea()方法来获取其面积。
Rectangle rect;
rect.setValues(5, 3);
double area = rect.getArea();
继承是一种定义新类的方式,该类可以继承现有类的所有属性和方法。继承关系用一个类的对象来派生出另一个类。
class Square: public Rectangle {
public:
void setSide(double side) {
width = side;
height = side;
}
};
在这个例子中,Square继承了Rectangle的属性和方法,并且Square还定义了一个新的方法setSide()。由于Square是从Rectangle派生而来的,因此Square也可以调用Rectangle的方法。
Square sq;
sq.setSide(5);
double area = sq.getArea();
多态是一个类的不同对象对相同的消息(方法调用)做出不同的响应的能力。多态性使对象更具可扩展性和可维护性。
class Shape {
protected:
int width;
int height;
public:
virtual int getArea() = 0;
void setValues(int w, int h) {
width = w;
height = h;
}
};
class Rectangle: public Shape {
public:
int getArea() {
return width * height;
}
};
class Triangle: public Shape {
public:
int getArea() {
return (width * height)/2;
}
};
在这个例子中,Shape是抽象类,它包含虚方法getArea()。Rectangle和Triangle类继承Shape并且实现了自己getArea()方法。由于getArea()是虚方法,当它被调用时,程序会根据实际类型来调用正确的方法。
Shape* shape;
Rectangle rect;
Triangle tri;
shape = ▭
int rectArea = shape->getArea();
shape = &tri;
int triArea = shape->getArea();
封装是一种将一个对象的属性和方法结合在一起的机制,然后控制访问这些属性和方法的访问级别。封装可以保护数据不被随意更改,从而确保应用程序的完整性。
class BankAccount {
private:
double balance;
public:
BankAccount(double b) {
balance = b;
}
double getBalance() {
return balance;
}
void deposit(double amount) {
balance += amount;
}
void withdraw(double amount) {
if(balance >= amount)
balance -= amount;
}
};
在这个例子中,BankAccount封装了balance属性和deposit()和withdraw()方法。由于balance是私有的,因此只有通过公共方法才能访问它。这使得BankAccount的使用更加安全,因为balance不能被随意更改。
BankAccount account(1000);
account.deposit(500);
account.withdraw(200);
double balance = account.getBalance();
在C++中,OOP提供了一个强大的机制来组织应用程序。通过使用类、对象、继承、多态和封装,可以轻松地设计出可扩展、可维护和安全的应用程序。