- Ciri-ciri pusaka
- Hierarki
- Polimorfisme
- Jenis-jenis pewarisan
- Pewarisan unik
- Pewarisan pelbagai peringkat
- Pewarisan hierarki
- Pewarisan hibrid
- Warisan berganda
- Jenis pusaka dari kelas asas
- Pewarisan awam
- Warisan yang dilindungi
- Pewarisan peribadi
- Contoh
- Contoh Python
- Contoh dalam C ++
- Rujukan
The warisan dalam objek - pengaturcaraan berorientasikan adalah satu cara untuk menyusun objek dalam hierarki daripada umum kepada khusus. Ini adalah alat yang digunakan untuk memperluas kelas ke kelas lain, mengekalkan pelaksanaan yang serupa.
Dalam kebanyakan bahasa berorientasikan objek berdasarkan kelas, objek yang dibuat melalui warisan, yang disebut objek anak, mendapat semua sifat dan tingkah laku objek induk.

Bukti warisan sederhana dalam orientasi objek. Sumber: Pluke / CC0 Creative Commons CC0 1.0 Domain Umum Universal
Oleh itu, ia adalah kualiti yang mewakili hubungan antara kelas yang berbeza. Warisan membolehkan kelas mempunyai tingkah laku yang sama dengan kelas lain dan memperluas atau menyesuaikan tingkah laku itu untuk memberikan tindakan khas untuk keperluan tertentu.
Warisan dapat membantu mewakili objek yang mempunyai beberapa perbezaan dan beberapa persamaan dalam cara ia berfungsi. Anda boleh meletakkan semua fungsi yang terdapat pada objek dalam kelas asas, dan kemudian menentukan satu atau lebih subkelas dengan fungsi tersuai anda sendiri.
Ciri-ciri pusaka
Warisan adalah salah satu ciri utama pengaturcaraan berorientasikan objek, digunakan untuk menentukan kelas baru dari kelas yang ada.
Maksudnya, kelas baru dapat diturunkan dari kelas asas yang ada, menambahkan ciri baru. Anda tidak perlu menulis dari awal. Oleh itu, pewarisan menyediakan cara untuk menggunakan semula kod yang ada dengan mudah.
Sekiranya anda sudah mempunyai kelas yang melakukan hampir semua yang anda mahukan, anda boleh membuat subkelas di mana sebahagian daripada tingkah lakunya diganti sebahagiannya, atau mungkin beberapa fungsi baru ditambahkan.
Kelas turunan mewarisi semua kaedah kelas asas, kecuali yang berikut:
- Pembina, pemusnah dan penyusun salinan kelas asas.
- Pengendali berlebihan dari kelas asas.
- Fungsi mesra kelas asas.
Hierarki
Seperti pohon keluarga, pewarisan berfungsi untuk membentuk hierarki kelas. Penting untuk diperhatikan bahawa atribut yang ditentukan untuk kelas asas akan hadir secara automatik di kelas turunan. Juga, kaedah untuk kelas asas akan berfungsi untuk derivatif.
Kelas dikatakan subkelas dari kelas yang diwarisinya. Sebaliknya, kelas ini akan menjadi superclass anda. Kelas yang paling generik dapat disebut sebagai kelas asas, kerana berada di dasar hierarki.
Polimorfisme
Pewarisan sangat popular dalam beberapa bahasa dengan jenis statik, kerana membolehkan pengaturcara untuk mengelakkan beberapa sekatan jenis statik.
Objek yang diwarisi dari objek lain dianggap sebagai subtipe objek tersebut. Contohnya ialah objek "pengajar" dan "pelajar", yang masing-masing mewarisi dari "orang".
Sekiranya pengajar dan pelajar adalah jenis orang yang sama, anda boleh menulis fungsi yang menerima jenis orang sebagai parameter dan berfungsi pada objek pengajar dan pelajar, kerana kedua-duanya adalah waris orang.
Jenis-jenis pewarisan
Pewarisan unik
Apabila kelas turunan mewarisi sifat dan tingkah laku kelas asas tunggal. Maksudnya, satu kelas hanya meliputi satu kelas yang lain.
Pewarisan pelbagai peringkat
Merujuk kepada alat di mana anda boleh mewarisi dari kelas turunan, menjadikan kelas turunan ini sebagai kelas asas untuk kelas baru. Iaitu, ia dihasilkan apabila kelas turunan dibuat dari kelas turunan yang lain.
Pewarisan hierarki
Dalam warisan ini, banyak subkelas mewarisi dari satu kelas. Iaitu, ia berlaku apabila kelas asas tunggal diwarisi oleh lebih daripada satu kelas turunan.
Pewarisan hibrid
Ini adalah warisan yang terhasil apabila salah satu daripada tiga warisan sebelumnya digabungkan (tunggal, hierarki dan bertingkat).
Warisan berganda
Ini sesuai dengan angka pewarisan ketika kelas mewarisi dari lebih dari satu superclass. Kelemahan dengan jenis pewarisan ini adalah bahawa kelas yang diturunkan harus menangani kebergantungannya pada dua kelas asas.
Sebaliknya, jenis warisan ini membolehkan pengaturcara membina kelas yang menggabungkan aspek pelbagai kelas dan hierarki yang sesuai.
Jenis pusaka dari kelas asas
Pewarisan awam
Apabila kelas berasal dari kelas asas awam, anggota awam kelas asas menjadi anggota kelas dasar yang dilindungi dan anggota kelas asas yang dilindungi menjadi anggota kelas dasar yang dilindungi.
Anggota peribadi kelas super tidak akan dapat diakses secara langsung dari kelas turunan, tetapi dapat diakses dengan panggilan yang dibuat kepada orang ramai dan anggota kelas dasar yang dilindungi.
Warisan yang dilindungi
Apabila anda membuat kelas yang diwarisi dari superclass terlindung, anggota superclass awam dan terlindung ini akan menjadi ahli kelas terlindung yang dilindungi.
Pewarisan peribadi
Apabila subkelas dibuat dari superclass peribadi, anggota superclass awam dan terlindung ini akan menjadi anggota subkelas peribadi.
Contoh
Contoh Python
Untuk menunjukkan bagaimana prinsip warisan berfungsi, kami akan menggunakan robot atau kelas robot yang lebih baik dalam bahasa pengaturcaraan Python. Untuk melakukan ini, kelas yang disebut RobotMédico (PhysicianRobot) akan ditentukan, yang berasal dari superclass Robot.

Sekiranya anda melihat kod kelas RobotMédico, anda dapat melihat bahawa tidak ada atribut atau kaedah yang ditentukan dalam kelas ini.
Oleh kerana kelas RobotMedico adalah subkelas Robot, ia mewarisi kaedah __init__ dan say_hi dalam kes ini. Mewarisi kaedah ini bermaksud bahawa mereka boleh digunakan seolah-olah mereka telah ditentukan dalam kelas RobotMédico.
Apabila contoh RobotMedico dibuat, fungsi __init__ juga akan membuat atribut nama. Kaedah say_hi dapat diterapkan pada objek "y" RobotMédico, seperti yang dapat dilihat pada hasil dari kode sebelumnya.
Contoh dalam C ++
Kelas boleh mewarisi dari lebih daripada satu kelas, yang bermaksud bahawa ia dapat mewarisi data dan fungsi dari pelbagai cermin mata hitam. Untuk menentukan kelas turunan, anda menggunakan senarai terbitan kelas untuk menentukan kelas asas.
Senarai derivasi kelas dalam C ++ menamakan satu atau lebih kelas asas dan mempunyai bentuk berikut: kelas turutan kelas: kelas dasar akses-penentu, di mana penentu akses adalah umum, dilindungi, atau peribadi, dan kelas asas adalah nama kelas yang ditentukan sebelumnya. Sekiranya penentu akses tidak digunakan, peribadi akan diambil secara lalai.
Superclass "Shape" dan kelas turunannya "Rectangle" dapat dipertimbangkan sebagai berikut:

Apabila kod di atas disusun dan dilaksanakan, keluaran berikut akan berlaku: "Jumlah kawasan: 35".
Rujukan
- Dave Braunschweig (2020). Warisan dan Polimorfisme. Komuniti Rebus. Diambil dari: press.rebus.community.
- Kursus Python (2020). Warisan. Diambil dari: python-course.eu.
- Mentor Data (2020). Warisan R. Diambil dari: datamentor.io.
- Titik Tutorial (2020). Warisan C ++. Diambil dari: tutorialspoint.com.
- Maklumat bersih (2020). Jenis Warisan yang berbeza. Diambil dari: net-informations.com.
