Warisan fungsi membolehkan kelas terbitan mewarisi kaedah daripada kelas asas, membolehkan penggunaan semula kod dan polimorfisme. Mereka bentuk hierarki warisan yang baik mengikut tanggungjawab tunggal, tertutup dan prinsip penggantian Rees boleh mengelakkan masalah gandingan kod dan berlian.
C++ Fungsi Warisan Diterangkan: Cara Merekabentuk Asas yang Baik dan Hierarki Pewarisan Kelas Terbitan
Dalam Pengaturcaraan Berorientasikan Objek (OOP), pewarisan fungsinya daripada subkelas (warisan kelasnya) kelas (Kelas asas) Ciri kaedah yang diwarisi. Ia membenarkan subkelas untuk memanfaatkan kefungsian yang telah ditakrifkan oleh kelas induk, sambil juga mentakrifkan fungsinya sendiri untuk keperluan khusus.
Reka bentuk hierarki pewarisan yang baik
Untuk mereka bentuk hierarki pewarisan yang baik, anda perlu mengikuti prinsip berikut:
-
Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas seharusnya tidak mempunyai tanggungjawab yang jelas dan tanggungjawab itu tidak jelas. Harus dikongsi oleh kelas lain.
-
Prinsip Tertutup-Terbuka (OCP): Entiti perisian (kelas dan kaedah) harus boleh dilanjutkan, tetapi tidak diubah suai.
-
Prinsip Penggantian Leese (LSP): Subjenis boleh menggantikan jenis induk tanpa mengubah ketepatan program.
Warisan fungsional
Dalam C++, warisan berfungsi terbahagi kepada dua jenis:
-
Warisan awam: Kelas terbitan mewarisi semua ahli kelas asas, termasuk ahli awam, dilindungi dan persendirian.
-
Warisan dilindungi: Kelas terbitan mewarisi semua ahli kelas asas, kecuali ahli persendirian. . code> Dog mewarisi fungsi
Animal
's eat()
dan mengatasi fungsi makeSound()
untuk menyediakan tingkah laku tertentu.
Kelebihan
Warisan fungsi mempunyai kelebihan berikut:
Animal
:
class Animal {
public:
void eat() { cout << "Animal is eating." << endl; }
virtual void makeSound() { cout << "Animal is making a sound." << endl; }
};
Salin selepas log masuk
派生类 Dog
从 Animal
继承:
class Dog : public Animal {
public:
void makeSound() override { cout << "Dog is barking." << endl; }
};
Salin selepas log masuk
Dog
继承了 Animal
的 eat()
函数,并覆盖了 makeSound()
Penggunaan semula kod:
Subkelas boleh memanfaatkan fungsi kelas induk untuk mengelakkan pertindihan kod.
Kebolehlanjutan: - Ciri baharu boleh ditambah dengan mudah tanpa mengubah suai kod sedia ada.
Polymorphism: - Subkelas boleh dianggap sebagai jenis kelas induknya, membenarkan gelagat objek ditukar semasa masa jalan.
Kelemahan - Warisan fungsi juga mempunyai beberapa kelemahan, termasuk:
Gandingan kod:
Subkelas digandingkan rapat dengan kelas induk, dan sebarang perubahan dalam kelas induk boleh menjejaskan subkelas.
Masalah berlian: - Masalah berlian berlaku apabila kelas terbitan mewarisi daripada berbilang kelas yang mewarisi kelas asas yang sama, mengakibatkan kekaburan.
Kesimpulan- Warisan fungsi ialah mekanisme penting untuk melaksanakan OOP dalam C++. Dengan mengikuti prinsip reka bentuk dengan teliti, anda boleh mencipta hierarki warisan yang baik yang meningkatkan kebolehgunaan semula, kebolehlanjutan dan kebolehselenggaraan kod anda.
Atas ialah kandungan terperinci Warisan Fungsi C++ Diterangkan: Bagaimana untuk Merekabentuk Hierarki Warisan Kelas Asas dan Terbitan yang Baik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!