一、類及其概念
在面向對象編程中,類是一個非常重要的概念。簡單來說,類就是一組相關數據和方法的封裝,可以看作是一個對象的模板。在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-hk/n/194594.html