Warisan Java (Dengan Contoh)

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 extendskunci 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.

Pelaksanaan Warisan Jawa

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 @Overrideanotasi 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, superkata 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, superkata kunci digunakan untuk memanggil eat()kaedah yang ada di superclass.

Kita juga boleh menggunakan superkata 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 protectedbidang 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,

Warisan Tunggal Jawa

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,

Warisan bertingkat Java

3. Warisan Hierarki

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

Warisan Hierarki Jawa

4. Warisan Pelbagai

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

Warisan Pelbagai Java

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,

Warisan Hibrid Java

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

Artikel menarik...