在C++中,封裝性是指將數據(屬性)和操作數據的方法(函數)包裝在一起,從而隱藏了類的內部實現細節。為了實現類的擴展,我們可以使用以下方法:
class Base {
public:
virtual void foo() {
// 基類實現
}
};
class Derived : public Base {
public:
void foo() override {
// 派生類實現
}
};
= 0
表示。派生類必須實現這個純虛函數,否則它們也將成為抽象類。這種方式可以用來強制使用基類的接口,同時允許通過派生類擴展功能。class Abstract {
public:
virtual void bar() = 0; // 純虛函數
};
class Concrete : public Abstract {
public:
void bar() override {
// 具體實現
}
};
class Engine {
public:
void start() {
// 發動機啟動實現
}
};
class Car {
private:
Engine engine;
public:
void start() {
engine.start(); // 調用發動機啟動實現
}
};
template <typename T>
class Container {
private:
T data;
public:
void set(T value) {
data = value;
}
T get() {
return data;
}
};
int main() {
Container<int> intContainer;
intContainer.set(42);
int value = intContainer.get(); // value 為 42
Container<std::string> stringContainer;
stringContainer.set("Hello, World!");
std::string strValue = stringContainer.get(); // strValue 為 "Hello, World!"
return 0;
}
通過使用這些方法,我們可以在C++中實現類的擴展,同時保持封裝性和代碼的可維護性。