1. 类和对象
类是对象的蓝图。对象是类的实例。
类就像一个蓝图或者模板,对象就是根据这个类来创造出的实际的东西,利用类与对象可以简化代码,减少重复的代码造成的损耗。
#include <iostream>
using namespace std;
class Dog {
public:
void bark() {
cout << "Woof!" << endl;
}
};
int main() {
Dog myDog; // 创建对象,实例
myDog.bark(); // 调用方法
return 0;
}
2. 封装
封装将数据和操作数据的代码放在一起,限制外部访问。
在编程中,封装意味着将数据(属性)和操作这些数据的方法(函数)放在一起,限制并限制外部直接访问这些,可以一定程度保证技术的不外泄。
像银行账户就是一个类,每个人的银行账户就是根据这个类所创建的实例,银行有自己对于银行账户的处理方法,他将数据(余额)和方法(获取余额,存钱等)放在一个类里面,而顾客对于银行账户直接操作就可以了,他没必要也没办法知道该银行所用的方法等,这样银行就可以确保自己的技术不外泄的情况下实现对用户银行账户的操作。
class BankAccount {
private:
double balance;
public:
BankAccount(double initialBalance) : balance(initialBalance) {}
void deposit(double amount) {
balance += amount;
}
double getBalance() const {
return balance;
}
};
int main() {
BankAccount account(1000);//直接引用实例,限制外部访问
account.deposit(500);
cout << "Balance: " << account.getBalance() << endl;
return 0;
}
3. 继承
继承允许创建一个新类,该类继承现有类的属性和方法。
像如果你有一个动物的类,这个类定义了一些共同的特征,比如所有动物都有吃和睡觉的能力。但是比如猫和狗,它们都有自己独特的特征,比如狗叫声为汪,而猫的叫声为喵。狗和猫继承了类的共同属性,那么在自身的类里面就不需要重复的去写动物所具有的属性,子类可以重用父类的代码,减少重复,提高效率,并且还可以在子类中添加新功能而不影响父类。
class Animal {
public:
void eat() {
cout << "Eating" << endl;
}
};
class Cat : public Animal {
public:
void meow() {
cout << "Meow!" << endl;
}
};
int main() {
Cat myCat;
myCat.eat(); // 继承自Animal,拥有所继承类的所有属性
myCat.meow();
return 0;
}
4. 多态
多态允许不同类的对象通过相同的接口进行操作。
在定义不同类的时候,若它们需要实现的方法一样,区别只是参数不一样,那么在它们的父类里面定义方法,在子类里面具体实现,那么最后只用调用方法函数,就可以分别实现两个子类所需调用的方法。就比如上面所说的猫和狗叫,他们都会叫,但是具体的叫声不一样,那么就在父类动物里定义一个叫函数,再在子类中去具体实现。
class Shape {
public:
virtual void draw() {
cout << "Drawing Shape" << endl;
}
};
class Circle : public Shape {
public:
void draw() override {
cout << "Drawing Circle" << endl;
}
};
void render(Shape& shape) {
shape.draw();
}
int main() {
Circle circle;
render(circle); // 调用Circle的draw方法
return 0;
}
好处:你可以用相同的方法处理不同类型的对象,使代码更灵活
可以轻松添加新类型,而不影响现有代码