Warisan Java (Dengan Contoh)

Dalam tutorial ini, kita akan belajar tentang warisan Java dan tipenya dengan bantuan contoh.

Pewarisan adalah salah satu fitur utama OOP yang memungkinkan kita membuat kelas baru dari kelas yang sudah ada.

Kelas baru yang dibuat dikenal sebagai subclass (anak atau kelas turunan) dan kelas yang ada dari mana kelas anak diturunkan dikenal sebagai superclass (kelas induk atau basis).

Kata extendskunci digunakan untuk melakukan pewarisan 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 metode dan bidang dari kelas Hewan.

Di sini, Anjing adalah subkelasnya dan Hewan adalah kelas supernya.

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(); ) )

Keluaran

 Nama saya Rohu, saya bisa makan

Dalam contoh di atas, kami telah menurunkan subclass Dog dari superclass Animal. Perhatikan pernyataannya,

 labrador.name = "Rohu"; labrador.eat();

Di sini, labrador adalah objek Anjing. Namun demikian, nama dan eat()anggota kelas Hewan.

Karena Anjing mewarisi bidang dan metode dari Hewan, kita dapat mengakses bidang dan metode menggunakan objek Anjing.

Implementasi Warisan Java

adalah-hubungan

Di Jawa, warisan adalah hubungan is-a . Artinya, kami menggunakan warisan hanya jika ada hubungan is-a antara dua kelas. Sebagai contoh,

  • Mobil adalah Kendaraan
  • Jeruk adalah Buah
  • Ahli Bedah adalah seorang Dokter
  • Anjing adalah Hewan

Di sini, Mobil dapat mewarisi Kendaraan , Jeruk dapat mewarisi dari Buah , dan sebagainya.

Metode Penimpaan dalam Warisan Java

Pada Contoh 1 , kita melihat objek subclass dapat mengakses metode superclass.

Namun, jika metode yang sama ada di superclass dan subclass, apa yang akan terjadi?

Dalam kasus ini, metode di subclass menggantikan metode di superclass. Konsep ini dikenal sebagai overriding metode di Jawa.

Contoh 2: Penimpaan metode di Java Inheritance

 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(); ) )

Keluaran

 Saya makan makanan anjing, saya bisa menggonggong

Dalam contoh di atas, eat()metode ini ada di superclass Animal dan subclass Dog.

Di sini, kami telah membuat objek labrador Anjing.

Sekarang ketika kita memanggil eat()menggunakan objek labrador, metode di dalam Dog dipanggil. Ini karena metode di dalam kelas turunan menimpa metode di dalam kelas dasar.

Ini disebut metode overriding. Untuk mempelajari lebih lanjut, kunjungi Java Method Overriding.

Catatan : Kami telah menggunakan @Overrideanotasi untuk memberi tahu kompiler bahwa kami mengganti metode. Namun, anotasi tidak wajib. Untuk mempelajari lebih lanjut, kunjungi Anotasi Java.

Kata kunci super dalam Warisan Java

Sebelumnya kita melihat bahwa metode yang sama di subclass menimpa metode di superclass.

In such a situation, the super keyword is used to call the method of the parent class from the method of the child class.

Example 3: super Keyword in Inheritance

 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(); ) )

Output

 I can eat I eat dog food I can bark 

In the above example, the eat() method is present in both the base class Animal and the derived class Dog. Notice the statement,

 super.eat();

Here, the super keyword is used to call the eat() method present in the superclass.

We can also use the super keyword to call the constructor of the superclass from the constructor of the subclass. To learn more, visit Java super keyword.

protected Members in Inheritance

In Java, if a class includes protected fields and methods, then these fields and methods are accessible from the subclass of the class.

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, satu subclass diturunkan dari satu superclass. Sebagai contoh,

Warisan Tunggal Java

2. Warisan Bertingkat

Dalam pewarisan multilevel, subclass diturunkan dari superclass dan kemudian subclass yang sama bertindak sebagai superclass untuk kelas lain. Sebagai contoh,

Warisan Multilevel Java

3. Warisan Hirarkis

Dalam pewarisan hierarkis, beberapa subclass diturunkan dari satu superclass. Sebagai contoh,

Warisan Hirarkis Jawa

4. Warisan Ganda

Dalam multiple inheritance, satu subclass diturunkan dari beberapa superclass. Sebagai contoh,

Java Multiple Inheritance

Catatan : Java tidak mendukung multiple inheritance. Namun, kita dapat mencapai banyak pewarisan menggunakan antarmuka. Untuk mempelajari lebih lanjut, kunjungi Java mengimplementasikan multiple inheritance.

5. Warisan Hibrid

Pewarisan hibrida adalah kombinasi dari dua atau lebih jenis pewarisan. Sebagai contoh,

Warisan Hibrida Jawa

Di sini, kami telah menggabungkan hierarki dan beberapa warisan untuk membentuk warisan hibrida.

Artikel yang menarik...