Tính đa hình của C ++
Tính đ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 theo kế thừa.
Giống như chúng tôi đã nêu trong 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. Tính đa hình sử dụng các 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 tôi thực hiện một hành động theo những cách khác nhau.
Ví dụ, hãy nghĩ về một lớp cơ sở được gọi Animal
có một phương thức được gọi 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 của riêng mình (lợn kêu và mèo kêu, v.v.):
Thí 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ớ từ 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 Pig
và
Dog
các đối tượng và ghi đè animalSound()
phương thức:
Thí 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;
}
Tại sao Và Khi nào Sử dụng "Kế thừa" và "Đa hình"?
- Nó hữu ích cho khả năng tái sử dụng 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.