- Warisan membolehkan kod digunakan semula dan dilanjutkan dengan cekap, menggalakkan kemodulatan dalam reka bentuk.
- Kelas kanak-kanak boleh dibuat yang mewarisi ciri biasa daripada kelas induk, mengkhususkannya mengikut keperluan.
- Bahasa seperti Java, Python dan C# menawarkan pelaksanaan dan had yang berbeza untuk warisan.

Pengaturcaraan berorientasikan objek (OOP) telah mengubah cara pembangun menstruktur dan mengatur projek mereka. Dalam paradigma ini, pewarisan memainkan peranan asas, kerana ia membolehkan penggunaan semula dan peluasan kod yang cekap. Tetapi apakah sebenarnya pewarisan dalam pengaturcaraan berorientasikan objek, dan mengapa ia begitu penting?
Warisan bukan sekadar konsep teknikal; ialah alat berkuasa yang membantu pembangun memodelkan dunia sebenar dengan lebih intuitif. Mekanisme ini membolehkan satu kelas berasal dari kelas lain, mewarisi atribut dan kaedahnya. Sepanjang artikel ini kami akan meneroka secara mendalam cara ia berfungsi, kelebihannya, contoh praktikal dan ciri utama elemen penting OOP ini.
Apakah warisan dalam pengaturcaraan berorientasikan objek?
Pewarisan ialah satu mekanisme dalam pengaturcaraan berorientasikan objek yang membenarkan penggunaan atribut dan kaedah daripada kelas induk dalam kelas terbitan atau anak. Mekanisme ini menggalakkan penggunaan semula kod dengan melanjutkan dan mengkhususkan tingkah laku yang ditakrifkan dalam kelas induk. Secara ringkasnya, jika anda mempunyai kelas induk yang dipanggil "Kenderaan," anda boleh mencipta kelas anak seperti "Kereta" atau "Motosikal" yang mewarisi ciri-ciri umum "Kenderaan."
Kelas induk dianggap sebagai generalisasi, manakala kelas anak adalah pengkhususan. Contohnya, jika kelas induk mentakrifkan kaedah "pindah", kelas terbitan boleh menggunakannya, memanjangkannya atau mentakrifkannya semula mengikut gelagat khusus mereka sendiri.
Kelebihan harta pusaka
- Penggunaan semula kod: Dengan mewarisi atribut dan kaedah daripada kelas asas, anda mengelak daripada mengulangi kod dalam kelas terbitan.
- Kebolehpanjangan: Ia membolehkan anda menambah fungsi baharu atau mengubah suai yang sedia ada dalam kelas terbitan.
- Organisasi hierarki: Ia memudahkan penstrukturan kod dalam hierarki logik, mencerminkan hubungan dunia sebenar.
- Penyeragaman: Mengekalkan konsistensi dalam kaedah dan atribut yang dikongsi antara kelas yang berkaitan.
Hubungan antara kelas: Kelas asas dan kelas terbitan
Dalam struktur hierarki, kelas asas, juga dikenali sebagai superkelas , mentakrifkan ciri dan tingkah laku umum yang boleh diwarisi. Kelas terbitan , atau subkelas, mewarisi sifat-sifat ini dan boleh mengkhusus dengan menambah atribut atau kaedah baharu, atau dengan mengatasi atribut atau kaedah sedia ada.
Contohnya, jika kita mentakrifkan kelas asas yang dipanggil "Haiwan", kita boleh mencipta subkelas seperti "Mamalia" atau "Reptil". Oleh itu, mereka semua akan berkongsi ciri umum seperti "bernafas", tetapi masing-masing mungkin mempunyai kaedah tertentu bergantung pada sifat mereka, seperti "menyusu" dalam kes mamalia.
Contoh kod: Warisan dalam bahasa yang berbeza
Mari lihat cara warisan digunakan dalam beberapa bahasa pengaturcaraan yang paling popular:
Warisan dalam Python
Warisan dilaksanakan dengan melepasi kelas asas sebagai hujah dalam takrifan kelas terbitan:
class Animal:
def __init__(self, especie):
self.especie = especie
def mover(self):
print("El animal se está moviendo")
class Perro(Animal):
def ladrar(self):
print("Guau, guau")
mi_perro = Perro("Canino")
mi_perro.mover()
mi_perro.ladrar()
Warisan di Jawa
Dalam Java, kata kunci extends digunakan untuk mewujudkan hubungan pewarisan:
public class Animal {
public void mover() {
System.out.println("El animal se está moviendo.");
}
}
public class Perro extends Animal {
public void ladrar() {
System.out.println("Guau, guau");
}
}
public class Main {
public static void main(String[] args) {
Perro miPerro = new Perro();
miPerro.mover();
miPerro.ladrar();
}
}
Warisan dalam C#
Dalam C#, pewarisan digunakan sama seperti Java, dengan kata kunci ` :` untuk menunjukkan bahawa satu kelas mewarisi daripada kelas yang lain:
class Animal {
public void Mover() {
Console.WriteLine("El animal se está moviendo.");
}
}
class Perro : Animal {
public void Ladrar() {
Console.WriteLine("Guau, guau");
}
}
class Program {
static void Main(string[] args) {
Perro miPerro = new Perro();
miPerro.Mover();
miPerro.Ladrar();
}
}
Warisan mudah dan warisan berbilang
Banyak bahasa pengaturcaraan, seperti Java dan C#, hanya menyokong pewarisan tunggal , yang bermaksud kelas terbitan hanya boleh mewarisi daripada satu kelas asas. Walau bagaimanapun, bahasa seperti Python membenarkan pewarisan berganda , yang mana kelas boleh mewarisi daripada berbilang kelas asas.
Menggunakan Kaedah dan Mengatasi
Salah satu ciri warisan yang paling berguna ialah keupayaan untuk mengatasi kaedah kelas asas. Ini membolehkan tingkah laku kaedah disesuaikan dengan keperluan khusus kelas terbitan.
Sebagai contoh, jika kelas asas mempunyai kaedah "pindah", kelas terbitan boleh mengatasinya untuk menentukan cara mengalih:
class Vehiculo {
public void mover() {
System.out.println("El vehículo se está moviendo.");
}
}
class Coche extends Vehiculo {
@Override
public void mover() {
System.out.println("El coche está avanzando por la carretera.");
}
}
Dalam kes ini, jika kaedah "bergerak" dipanggil daripada objek kelas "Kereta", versi khusus kelas itu akan dilaksanakan.
Polimorfisme dan warisan
Polimorfisme ialah konsep utama yang berkaitan dengan pewarisan. Membenarkan objek untuk dianggap sebagai contoh kelas asasnya, sambil mengekalkan tingkah laku yang ditakrifkan dalam kelas terbitannya. Ini amat berguna dalam struktur seperti senarai atau tatasusunan yang mengandungi objek daripada jenis yang berbeza.
Sebagai contoh:
Animal[] animales = { new Perro(), new Gato() };
for (Animal animal : animales) {
animal.hacerSonido();
}
Warisan ialah alat yang berkuasa dalam pengaturcaraan berorientasikan objek yang bukan sahaja membenarkan penggunaan semula kod, tetapi juga mewujudkan hubungan hierarki antara kelas dan menggalakkan reka bentuk perisian yang lebih modular dan teratur. Memahami asasnya dan cara menggunakannya dengan betul adalah penting bagi mana-mana pembangun yang ingin menulis kod yang cekap dan boleh diselenggara.