Dalam tutorial ini, kita akan belajar mengenai pewarisan Java dan jenisnya dengan bantuan contoh.
Inheritance adalah salah satu ciri utama OOP yang membolehkan kita membuat kelas baru dari kelas yang ada.
Kelas baru yang dicipta dikenali sebagai subkelas (kanak-kanak atau kelas yang diperolehi) dan kelas yang sedia ada dari mana kelas kanak-kanak itu berasal dikenali sebagai superclass (ibu bapa atau kelas asas).
Kata extends
kunci digunakan untuk melaksanakan warisan di Jawa. Sebagai contoh,
class Animal ( // methods and fields ) // use of extends keyword // to perform inheritance class Dog extends Animal ( // methods and fields of Animal // methods and fields of Dog )
Dalam contoh di atas, kelas Anjing dibuat dengan mewarisi kaedah dan ladang dari kelas Haiwan.
Di sini, Dog adalah subkelas dan Animal adalah superclass.
Contoh 1: Warisan Java
class Animal ( // field and method of the parent class String name; public void eat() ( System.out.println("I can eat"); ) ) // inherit from Animal class Dog extends Animal ( // new method in subclass public void display() ( System.out.println("My name is " + name); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // access field of superclass labrador.name = "Rohu"; labrador.display(); // call method of superclass // using object of subclass labrador.eat(); ) )
Pengeluaran
Nama saya Rohu saya boleh makan
Dalam contoh di atas, kami telah menghasilkan Anjing subkelas dari superclass Animal. Perhatikan kenyataannya,
labrador.name = "Rohu"; labrador.eat();
Di sini, labrador adalah objek Dog. Walau bagaimanapun, namakan dan eat()
merupakan ahli kelas Haiwan.
Oleh kerana Anjing mewarisi ladang dan kaedah dari Haiwan, kita dapat mengakses ladang dan kaedah menggunakan objek Anjing.

adalah-hubungan
Di Jawa, warisan adalah adalah-a hubungan. Artinya, kita menggunakan warisan hanya jika ada hubungan antara-dua kelas. Sebagai contoh,
- Kereta adalah Kenderaan
- Jeruk adalah Buah
- Pakar Bedah adalah Doktor
- Anjing adalah Haiwan
Di sini, Kereta boleh diwarisi dari Kenderaan , Orange boleh mewarisi dari Buah , dan sebagainya.
Kaedah Mengatasi dalam Warisan Java
Dalam Contoh 1 , kita melihat objek subkelas dapat mengakses kaedah superclass.
Namun, jika kaedah yang sama ada di superclass dan subclass, apa yang akan berlaku?
Dalam kes ini, kaedah dalam subkelas mengatasi kaedah dalam superclass. Konsep ini dikenali sebagai kaedah overriding di Jawa.
Contoh 2: Kaedah mengatasi dalam Warisan Java
class Animal ( // method in the superclass public void eat() ( System.out.println("I can eat"); ) ) // Dog inherits Animal class Dog extends Animal ( // overriding the eat() method @Override public void eat() ( System.out.println("I eat dog food"); ) // new method in subclass public void bark() ( System.out.println("I can bark"); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // call the eat() method labrador.eat(); labrador.bark(); ) )
Pengeluaran
Saya makan makanan anjing yang saya boleh menyalak
Dalam contoh di atas, eat()
kaedah ini terdapat pada Superclass Animal dan juga subclass Dog.
Di sini, kami telah membuat labrador objek Dog.
Sekarang apabila kita memanggil eat()
menggunakan objek labrador, kaedah di dalam Dog dipanggil. Ini kerana kaedah di dalam kelas turunan mengatasi kaedah di dalam kelas asas.
Ini dipanggil kaedah overriding. Untuk mengetahui lebih lanjut, kunjungi Kaedah Mengganti Java.
Catatan : Kami telah menggunakan @Override
anotasi untuk memberitahu penyusun bahawa kami mengesampingkan kaedah. Walau bagaimanapun, anotasi tidak wajib. Untuk mengetahui lebih lanjut, lawati Java Annotations.
Kata kunci super dalam Warisan Java
Sebelum ini kita melihat bahawa kaedah yang sama dalam subkelas mengatasi kaedah dalam superclass.
Dalam keadaan seperti itu, super
kata kunci digunakan untuk memanggil kaedah kelas induk dari kaedah kelas anak.
Contoh 3: Kata kunci super dalam Warisan
class Animal ( // method in the superclass public void eat() ( System.out.println("I can eat"); ) ) // Dog inherits Animal class Dog extends Animal ( // overriding the eat() method @Override public void eat() ( // call method of superclass super.eat(); System.out.println("I eat dog food"); ) // new method in subclass public void bark() ( System.out.println("I can bark"); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // call the eat() method labrador.eat(); labrador.bark(); ) )
Pengeluaran
Saya boleh makan saya makan makanan anjing yang saya boleh menyalak
Dalam contoh di atas, eat()
kaedah ini terdapat pada kelas haiwan dan kelas anjing. Perhatikan kenyataannya,
super.eat();
Di sini, super
kata kunci digunakan untuk memanggil eat()
kaedah yang ada di superclass.
Kita juga boleh menggunakan super
kata kunci untuk memanggil pembangun superclass dari pembangun subkelas. Untuk mengetahui lebih lanjut, lawati kata kunci super Java .
Ahli dilindungi dalam Warisan
Di Jawa, jika kelas merangkumi protected
bidang dan kaedah, maka bidang dan kaedah ini dapat diakses dari subkelas kelas.
Example 4: protected Members in Inheritance
class Animal ( protected String name; protected void display() ( System.out.println("I am an animal."); ) ) class Dog extends Animal ( public void getInfo() ( System.out.println("My name is " + name); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // access protected field and method // using the object of subclass labrador.name = "Rocky"; labrador.display(); labrador.getInfo(); ) )
Output
I am an animal. My name is Rocky
In the above example, we have created a class named Animal. The class includes a protected field: name and a method: display()
.
We have inherited the Dog class inherits Animal. Notice the statement,
labrador.name = "Rocky"; labrador.display();
Here, we are able to access the protected field and method of the superclass using the labrador object of the subclass.
Why use inheritance?
- The most important use of inheritance in Java is code reusability. The code that is present in the parent class can be directly used by the child class.
- Method overriding is also known as runtime polymorphism. Hence, we can achieve Polymorphism in Java with the help of inheritance.
Types of inheritance
There are five types of inheritance.
1. Single Inheritance
Dalam pewarisan tunggal, subkelas tunggal merangkumi satu superclass tunggal. Sebagai contoh,

2. Warisan Bertingkat
Dalam warisan bertingkat, subkelas bermula dari kelas super dan kemudian kelas yang sama berfungsi sebagai kelas super untuk kelas lain. Sebagai contoh,

3. Warisan Hierarki
Dalam pewarisan hierarki, beberapa subkelas terdiri dari satu superclass. Sebagai contoh,

4. Warisan Pelbagai
Dalam pelbagai warisan, satu subkelas terdiri dari pelbagai cermin mata hitam. Sebagai contoh,

Catatan : Java tidak menyokong pelbagai warisan. Walau bagaimanapun, kita dapat memperoleh pelbagai warisan menggunakan antara muka. Untuk mengetahui lebih lanjut, lawati Java menggunakan banyak warisan.
5. Warisan Hibrid
Pewarisan hibrid adalah gabungan dua atau lebih jenis pewarisan. Sebagai contoh,

Di sini, kami telah menggabungkan warisan hierarki dan pelbagai untuk membentuk warisan hibrid.