Đa hình C++
Đa hình
Đa hình có nghĩa là "nhiều dạng" và nó xảy ra khi chúng ta có nhiều lớp có liên quan với nhau bằng tính kế thừa.
Giống như chúng tôi đã chỉ ra ở chương trước; Kế thừa cho phép chúng ta kế thừa các thuộc tính và phương thức từ một lớp khác. Đa hình sử dụng những phương pháp đó để thực hiện các nhiệm vụ khác nhau. Điều này cho phép chúng ta thực hiện một hành động theo nhiều cách khác nhau.
Ví dụ, hãy nghĩ về một lớp cơ sở có tên Animal
có một phương thức gọi là animalSound()
. Các lớp Động vật có nguồn gốc có thể là Lợn, Mèo, Chó, Chim - Và chúng cũng có cách triển khai âm thanh động vật riêng (tiếng lợn kêu và tiếng mèo kêu, v.v.):
Ví dụ
// Base class
class Animal {
public:
void
animalSound() {
cout << "The animal makes a sound \n";
}
};
// Derived class
class Pig : public Animal {
public:
void
animalSound() {
cout << "The pig says: wee wee \n";
}
};
// Derived class
class Dog
: public Animal {
public:
void animalSound()
{
cout << "The dog says: bow wow \n";
}
};
Hãy nhớ trong chương Kế thừa rằng chúng ta sử dụng ký hiệu :
để kế thừa từ một lớp.
Bây giờ chúng ta có thể tạo các đối tượng Pig
và Dog
và ghi đè phương thức animalSound()
:
Ví dụ
// Base class
class Animal {
public:
void
animalSound() {
cout << "The animal makes a sound \n";
}
};
// Derived class
class Pig : public Animal {
public:
void
animalSound() {
cout << "The pig says: wee wee \n";
}
};
// Derived class
class Dog
: public Animal {
public:
void animalSound()
{
cout << "The dog says: bow wow \n";
}
};
int main() {
Animal
myAnimal;
Pig myPig;
Dog myDog;
myAnimal.animalSound();
myPig.animalSound();
myDog.animalSound();
return 0;
}
Hãy tự mình thử »Tại sao và khi nào nên sử dụng "Kế thừa" và "Đa hình"?
- Hữu ích cho khả năng sử dụng lại mã: sử dụng lại các thuộc tính và phương thức của một lớp hiện có khi bạn tạo một lớp mới.