一、類及其概念
在面向對象編程中,類是一個非常重要的概念。簡單來說,類就是一組相關數據和方法的封裝,可以看作是一個對象的模板。在C++中,通過定義類並創建對象,可以實現封裝數據和方法的目的。一個類的具體實例被稱為對象。通過對象,可以訪問到類中封裝的數據和方法。
類可以看作一種自定義的數據類型。在C++中,可以通過class關鍵字定義一個類,如下所示:
class MyClass {
private:
int x;
public:
void setX(int num) {
x = num;
}
int getX() {
return x;
}
};
該代碼定義了一個名為MyClass的類,其中包含一個私有成員變數x和兩個公有成員函數setX()和getX()。私有成員變數只能在類內被訪問,公有成員函數可以在類的外部被訪問。
二、封裝性
類的封裝性是面向對象編程中一個非常重要的概念。封裝就是將類的數據和方法進行保護,不允許外部直接訪問或修改。在C++中,可以使用private關鍵字來定義私有成員變數和私有成員函數,以實現封裝。
下面是一個簡單的例子:
class Person {
private:
string name;
public:
void setName(string n) {
name = n;
}
string getName() {
return name;
}
};
int main() {
Person p;
p.setName("Alice");
cout << "Name: " << p.getName() << endl;
return 0;
}
在上面的代碼中,name是一個私有成員變數,只能通過公有成員函數setName()和getName()進行訪問。在main函數中,通過對象p來訪問和修改name成員變數,但是不能直接訪問name成員變數。
三、繼承
繼承是一種面向對象編程中的重要特性,可以實現類之間的關係。在C++中,可以用子類派生出新的類,從而實現繼承。繼承的目的是通過復用已有的類,減少代碼的重複性。在繼承中,父類也稱為基類或超類,子類也稱為派生類。
下面是一個簡單的例子:
class Animal {
public:
void eat() {
cout << "Animal eats." << endl;
}
void sleep() {
cout << "Animal sleeps." << endl;
}
};
class Dog : public Animal {
public:
void bark() {
cout << "Dog barks." << endl;
}
};
int main() {
Dog d;
d.eat();
d.sleep();
d.bark();
return 0;
}
在上面的代碼中,Animal類是父類,Dog類是子類。在Dog類中,使用public關鍵字繼承了Animal類的所有公有成員。在main函數中,通過子類對象d訪問了父類的成員函數eat()和sleep()。同時,還可以調用子類的成員函數bark()。
四、多態
多態是面向對象編程中的另一個重要特性,可以實現對不同對象的統一操作。多態分為靜態多態和動態多態兩種。靜態多態是通過函數重載和運算符重載來實現的,而動態多態則是通過虛函數來實現的。在C++中,虛函數使用關鍵字virtual來進行聲明。
下面是一個簡單的例子:
class Shape {
protected:
int width, height;
public:
Shape(int w = 0, int h = 0) {
width = w;
height = h;
}
virtual int area() {
cout << "Parent class area." << endl;
return 0;
}
};
class Rectangle : public Shape {
public:
Rectangle(int w = 0, int h = 0) : Shape(w, h){ }
int area() {
cout << "Rectangle class area." << endl;
return (width * height);
}
};
class Triangle : public Shape {
public:
Triangle(int w = 0, int h = 0) : Shape(w, h){ }
int area() {
cout << "Triangle class area." <area();
shape = &tri;
shape->area();
return 0;
}
在上面的代碼中,Shape類是基類,Rectangle和Triangle類是派生類。在Shape類中定義了一個虛函數area(),在Rectangle和Triangle類中重寫該虛函數,實現不同的功能。在main函數中,通過基類指針對不同的子類進行操作,實現了多態的效果。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/194594.html
微信掃一掃
支付寶掃一掃