封装、继承与多态性是面向对象编程的三大原则。
封装
封装(Encapsulation),即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别。
//Animal.h
class Animal {
public:
Animal();
virtual ~Animal();
void Eat() {
cout << "Animal eat." << endl;
}
private:
void Sleep() {
cout << "Animal sleep." << endl;
}
};
//Main.cpp
int main() {
Animal* anl = new Animal();
anl->Eat();
//anl->Sleep();
return 0;
}
封装Animal类,其中包括一个public(公有的)方法Eat,一个private(私有的)方法Sleep。在Main中可直接调用Animal对象公有的的Eat方法,且无需知道Eat方法的具体实现细节。但在Main中不可以调用Animal对象私有的Sleep方法。私有的方法仅在类的内部可以调用。
继承
继承(Inheritance),是基于一个父类创建一个新的子类的过程。子类自动拥有父类所有成员变量(属性)和函数(方法),并可根据需要添加更多的成员变量或函数。
//Dog.h
class Dog : public Animal {
public:
Dog();
virtual ~Dog();
void Bark() {
cout << "Dog bark." << endl;
}
};
//Main.cpp
int main() {
Dog* dg = new Dog();
dg->Eat();
dg->Bark();
return 0;
}
多态
多态性(Polymorphism),是指借助动态绑定技术,为一个函数名关联多种含义的能力。可以存在“一个接口,多种实现”的效果。