Perbezaan Antara Warisan dan Kontena

Perbezaan Antara Warisan dan Kontena
Perbezaan Antara Warisan dan Kontena

Video: Perbezaan Antara Warisan dan Kontena

Video: Perbezaan Antara Warisan dan Kontena
Video: Rumah Lelong: Langkah Sebelum Membida 2024, Julai
Anonim

Warisan lwn Kontena

Pewarisan dan Containership ialah dua konsep penting yang terdapat dalam OOP (Contoh Pengaturcaraan Berorientasikan Objek: C++). Secara ringkas, kedua-dua Containership dan Inheritance berurusan dengan menyediakan sifat atau tingkah laku tambahan kepada kelas. Warisan ialah keupayaan kelas untuk mewarisi sifat dan tingkah laku daripada kelas induk dengan memanjangkannya. Sebaliknya, Containership ialah keupayaan kelas untuk mengandungi objek kelas yang berbeza sebagai data ahli.

Apakah itu Warisan?

Seperti yang dinyatakan di atas, Warisan ialah keupayaan kelas untuk mewarisi sifat dan tingkah laku daripada kelas induk dengan melanjutkannya. Warisan pada dasarnya menyediakan penggunaan semula kod dengan membenarkan melanjutkan sifat dan tingkah laku kelas sedia ada oleh kelas yang baru ditakrifkan. Jika kelas A memanjangkan B, maka kelas B dipanggil kelas induk (atau kelas super) dan kelas A dipanggil kelas anak (atau kelas terbitan/sub kelas). Dalam senario contoh ini, kelas A akan mewarisi semua atribut awam dan dilindungi serta kaedah kelas super (B). Subkelas boleh menggantikan (menyediakan fungsi baharu atau lanjutan kepada kaedah) tingkah laku yang diwarisi daripada kelas induk. Warisan mewakili hubungan "is-a" dalam OOP. Ini pada asasnya bermakna bahawa A juga adalah B. Dalam erti kata lain, B boleh menjadi kelas dengan penerangan umum entiti dunia sebenar tertentu tetapi A menentukan pengkhususan tertentu. Dalam masalah pengaturcaraan dunia sebenar, kelas Orang boleh dilanjutkan untuk mencipta kelas Pekerja. Ini dipanggil pengkhususan. Tetapi anda juga boleh membuat kelas Pekerja dahulu dan kemudian menyamaratakannya kepada kelas Orang juga (i.e. generalisasi). Dalam contoh ini, Pekerja akan mempunyai semua sifat dan tingkah laku Orang tersebut (iaitu Pekerja juga Orang) dan mungkin mengandungi beberapa fungsi tambahan (jadi, Orang itu bukan Pekerja) juga.

Apakah itu Kontena?

Containership ialah keupayaan kelas untuk mengandungi objek kelas berbeza sebagai data ahli. Sebagai contoh, kelas A boleh mengandungi objek kelas B sebagai ahli. Di sini, semua kaedah awam (atau fungsi) yang ditakrifkan dalam B boleh dilaksanakan dalam kelas A. Kelas A menjadi bekas, manakala kelas B menjadi kelas terkandung. Kontena juga dirujuk sebagai Komposisi. Dalam contoh ini, boleh dikatakan bahawa kelas A terdiri daripada kelas B. Dalam OOP, Containership mewakili perhubungan "mempunyai-a". Adalah penting untuk ambil perhatian bahawa, walaupun bekas mempunyai akses untuk melaksanakan semua kaedah awam kelas yang terkandung, ia tidak dapat mengubah atau menyediakan fungsi tambahan. Apabila ia datang kepada masalah pengaturcaraan dunia sebenar, objek kelas TextBox mungkin terkandung dalam Borang kelas, dan dengan itu boleh dikatakan bahawa Borang mengandungi TextBox (atau sebagai alternatif, Borang terdiri daripada TextBox).

Perbezaan antara Warisan dan Kontena

Walaupun Pewarisan dan Kontena ialah dua konsep OOP, ia agak berbeza dalam perkara yang dibenarkan oleh pengaturcara mencapainya. Warisan ialah keupayaan kelas untuk mewarisi sifat dan tingkah laku daripada kelas induk dengan melanjutkannya, manakala Containership ialah keupayaan kelas untuk mengandungi objek kelas yang berbeza sebagai data ahli. Jika kelas dilanjutkan, ia mewarisi semua harta/tingkah laku awam dan dilindungi dan tingkah laku tersebut mungkin ditindih oleh subkelas. Tetapi jika kelas terkandung dalam kelas lain, bekas itu tidak mendapat keupayaan untuk menukar atau menambah tingkah laku pada yang terkandung. Warisan mewakili hubungan "is-a" dalam OOP, manakala Containership mewakili hubungan "mempunyai-a".

Disyorkan: