Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Menguasai Warisan Java: Prinsip Subkelas dan Superkelas

Warisan dapat didefinisikan sebagai proses di mana satu kelas memperoleh properti (metode dan bidang) dari kelas lain. Dengan penggunaan warisan, informasi menjadi dapat diatur dalam urutan hierarkis.

Kelas yang mewarisi properti dari kelas lain dikenal sebagai subclass (kelas turunan, kelas anak) dan kelas yang propertinya diwarisi dikenal sebagai superkelas (kelas dasar, kelas induk).

Kata Kunci extends

extends adalah kata kunci yang digunakan untuk mewarisi properti dari sebuah kelas. Berikut adalah sintaks kata kunci extends.

Sintaks

 class Super { ..... ..... } class Sub extends Super { ..... ..... } 

Kode Contoh

Berikut adalah contoh yang menunjukkan warisan Java. Dalam contoh ini, Anda dapat mengamati dua kelas yaitu Calculation dan My_Calculation.

Dengan menggunakan kata kunci extends, My_Calculation mewarisi metode addition() dan Subtraction() dari kelas Calculation.

Salin dan tempel program berikut ke dalam file dengan nama My_Calculation.java

Contoh

Live Demo
 class Calculation { int z; public void addition(int x, int y) { z = x + y; System.out.println("Jumlah angka yang diberikan:"+z); } public void Subtraction(int x, int y) { z = x - y; System.out.println("Selisih antara angka yang diberikan:"+z); } } public class My_Calculation extends Calculation { public void multiplication(int x, int y) { z = x * y; System.out.println("Hasil kali angka yang diberikan:"+z); } public static void main(String args[]) { int a = 20, b = 10; My_Calculation demo = new My_Calculation(); demo.addition(a, b); demo.Subtraction(a, b); demo.multiplication(a, b); } } 

Kompilasi dan jalankan kode di atas seperti yang ditunjukkan di bawah ini.

 javac My_Calculation.java java My_Calculation 

Setelah menjalankan program, ini akan menghasilkan hasil berikut:

Keluaran

 Jumlah angka yang diberikan:30 Selisih antara angka yang diberikan:10 Hasil kali angka yang diberikan:200 

Dalam program yang diberikan, ketika objek untuk kelas My_Calculation dibuat, salinan isi superkelas dibuat di dalamnya. Itulah sebabnya, menggunakan objek subclass Anda dapat mengakses anggota superkelas.

Menguasai Warisan Java: Prinsip Subkelas dan Superkelas

Variabel referensi superkelas dapat menahan objek subclass, tetapi menggunakan variabel tersebut Anda hanya dapat mengakses anggota superkelas, jadi untuk mengakses anggota kedua kelas disarankan untuk selalu membuat variabel referensi ke subclass.

Jika Anda mempertimbangkan program di atas, Anda dapat membuat instance kelas seperti yang ditunjukkan di bawah ini. Namun menggunakan variabel referensi superkelas ( cal dalam hal ini) Anda tidak dapat memanggil metode multiplication(), yang termasuk dalam subclass My_Calculation.

 Calculation demo = new My_Calculation(); demo.addition(a, b); demo.Subtraction(a, b); 

Catatan – Subclass mewarisi semua anggota (bidang, metode, dan kelas bersarang) dari superkelasnya. Konstruktor bukan anggota, jadi mereka tidak diwarisi oleh subclass, tetapi konstruktor superkelas dapat dipanggil dari subclass.

Kata Kunci super

Kata kunci super mirip dengan kata kunci this. Berikut adalah skenario di mana kata kunci super digunakan.

Membedakan Anggota

Jika sebuah kelas mewarisi properti dari kelas lain. Dan jika anggota superkelas memiliki nama yang sama dengan subclass, untuk membedakan variabel ini kita menggunakan kata kunci super seperti yang ditunjukkan di bawah ini.

 super.variabel super.method(); 

Kode Contoh

Bagian ini memberikan program yang menunjukkan penggunaan kata kunci super.

Dalam program yang diberikan, Anda memiliki dua kelas yaitu Sub_class dan Super_class, keduanya memiliki metode bernama display() dengan implementasi yang berbeda, dan variabel bernama num dengan nilai yang berbeda. Kita memanggil metode display() dari kedua kelas dan mencetak nilai variabel num dari kedua kelas. Di sini Anda dapat melihat bahwa kita telah menggunakan kata kunci super untuk membedakan anggota superkelas dari subclass.

Salin dan tempel program ke dalam file dengan nama Sub_class.java.

Contoh

Live Demo
 class Super_class { int num = 20; // display method of superclass public void display() { System.out.println("This is the display method of superclass"); } } public class Sub_class extends Super_class { int num = 10; // display method of sub class public void display() { System.out.println("This is the display method of subclass"); } public void my_method() { // Instantiating subclass Sub_class sub = new Sub_class(); // Invoking the display() method of sub class sub.display(); // Invoking the display() method of superclass super.display(); // printing the value of variable num of subclass System.out.println("value of the variable named num in sub class:"+ sub.num); // printing the value of variable num of superclass System.out.println("value of the variable named num in super class:"+ super.num); } public static void main(String args[]) { Sub_class obj = new Sub_class(); obj.my_method(); } } 

Kompilasi dan jalankan kode di atas menggunakan sintaks berikut.

 javac Super_Demo java Super 

Pada menjalankan program, Anda akan mendapatkan hasil berikut:

Keluaran

 This is the display method of subclass This is the display method of superclass value of the variable named num in sub class:10 value of the variable named num in super class:20 

Memanggil Konstruktor Superkelas

Jika sebuah kelas mewarisi properti dari kelas lain, subclass secara otomatis memperoleh konstruktor default superkelas. Namun jika Anda ingin memanggil konstruktor berparameter superkelas, Anda perlu menggunakan kata kunci super seperti yang ditunjukkan di bawah ini.

 super(nilai); 

Kode Contoh

Program yang diberikan dalam bagian ini menunjukkan cara menggunakan kata kunci super untuk memanggil konstruktor berparameter superkelas. Program ini berisi superkelas dan subclass, di mana superkelas berisi konstruktor berparameter yang menerima nilai integer, dan kita menggunakan kata kunci super untuk memanggil konstruktor berparameter superkelas.

Salin dan tempel program berikut ke dalam file dengan nama Subclass.java

Contoh

Live Demo
 class Superclass { int age; Superclass(int age) { this.age = age; } public void getAge() { System.out.println("The value of the variable named age in super class is: " +age); } } public class Subclass extends Superclass { Subclass(int age) { super(age); } public static void main(String args[]) { Subclass s = new Subclass(24); s.getAge(); } } 

Kompilasi dan jalankan kode di atas menggunakan sintaks berikut.

 javac Subclass java Subclass 

Pada menjalankan program, Anda akan mendapatkan hasil berikut:

Keluaran

 The value of the variable named age in super class is: 24 

Hubungan IS-A

IS-A adalah cara untuk mengatakan: Objek ini adalah tipe dari objek itu. Mari kita lihat bagaimana kata kunci extends digunakan untuk mencapai warisan.

 public class Animal { } public class Mammal extends Animal { } public class Reptile extends Animal { } public class Dog extends Mammal { } 

Sekarang, berdasarkan contoh di atas, dalam istilah Berorientasi Objek, hal-hal berikut benar:

Sekarang, jika kita mempertimbangkan hubungan IS-A, kita dapat mengatakan:

Dengan menggunakan kata kunci extends, subclass akan dapat mewarisi semua properti superkelas kecuali properti private superkelas.

Kita dapat memastikan bahwa Mammal sebenarnya adalah Animal dengan menggunakan operator instance.

Contoh

Live Demo
 class Animal { } class Mammal extends Animal { } class Reptile extends Animal { } public class Dog extends Mammal { public static void main(String args[]) { Animal a = new Animal(); Mammal m = new Mammal(); Dog d = new Dog(); System.out.println(m instanceof Animal); System.out.println(d instanceof Mammal); System.out.println(d instanceof Animal); } } 

Ini akan menghasilkan hasil berikut:

Keluaran

 true true true 

Sejak kita memiliki pemahaman yang baik tentang kata kunci extends, mari kita lihat bagaimana kata kunci implements digunakan untuk mendapatkan hubungan IS-A.

Secara umum, kata kunci implements digunakan dengan kelas untuk mewarisi properti dari sebuah antarmuka. Antarmuka tidak pernah dapat diperluas oleh kelas.

Contoh

 public interface Animal { } public class Mammal implements Animal { } public class Dog extends Mammal { } 

Kata Kunci instanceof

Mari kita gunakan operator instanceof untuk memeriksa apakah Mammal sebenarnya adalah Animal, dan dog sebenarnya adalah Animal.

Contoh

Live Demo
 interface Animal{} class Mammal implements Animal{} public class Dog extends Mammal { public static void main(String args[]) { Mammal m = new Mammal(); Dog d = new Dog(); System.out.println(m instanceof Animal); System.out.println(d instanceof Mammal); System.out.println(d instanceof Animal); } } 

Ini akan menghasilkan hasil berikut:

Keluaran

 true true true 

Hubungan HAS-A

Hubungan ini terutama berdasarkan penggunaan. Ini menentukan apakah suatu kelas MEMILIKI sesuatu yang tertentu. Hubungan ini membantu mengurangi duplikasi kode serta bug.

Mari kita lihat contoh berikut:

Contoh

 public class Vehicle{} public class Speed{} public class Van extends Vehicle { private Speed sp; } 

Ini menunjukkan bahwa kelas Van MEMILIKI Speed. Dengan memiliki kelas terpisah untuk Speed, kita tidak perlu menempatkan seluruh kode yang terkait dengan speed di dalam kelas Van, yang memungkinkan kelas Speed digunakan kembali dalam beberapa aplikasi.

Dalam fitur Berorientasi Objek, pengguna tidak perlu repot-repot tentang objek mana yang melakukan pekerjaan nyata. Untuk mencapai ini, kelas Van menyembunyikan detail implementasi dari pengguna kelas Van. Jadi, dasarnya apa yang terjadi adalah pengguna akan meminta kelas Van untuk melakukan tindakan tertentu dan kelas Van akan melakukan pekerjaan itu sendiri atau meminta kelas lain untuk melakukan tindakan tersebut.

Jenis Warisan

Ada berbagai jenis warisan seperti yang ditunjukkan di bawah ini.

Menguasai Warisan Java: Prinsip Subkelas dan Superkelas

Satu fakta yang sangat penting untuk diingat adalah Java tidak mendukung warisan ganda. Ini berarti sebuah kelas tidak dapat memperluas lebih dari satu kelas. Oleh karena itu, berikut ini ilegal:

Contoh

 public class extends Animal, Mammal{} 

Namun, sebuah kelas dapat mengimplementasikan satu atau lebih antarmuka, yang telah membantu Java menghilangkan ketidakmungkinan warisan ganda.

java

  1. Memahami Kata Kunci final Java: Variabel, Metode, dan Kelas
  2. Operator instanceof Java: Panduan Lengkap
  3. Memahami Kelas Bersarang Statis Java: Penggunaan, Perbedaan, dan Contoh
  4. Menguasai Kelas Dalam Anonim Java: Definisi, Sintaks, dan Contoh Praktis
  5. Pola Singleton Java Dijelaskan: Cara Menerapkan dan Menggunakannya dengan Aman
  6. Menguasai Refleksi Java: Memeriksa Kelas, Metode, dan Field pada Waktu Eksekusi
  7. Menguasai Java ObjectOutputStream: Serialisasi, Metode, dan Contoh Praktis
  8. Menguasai Java Generics – Membangun Kode yang Dapat Digunakan Kembali dan Aman Tipe
  9. Pengoperasian File Java dengan java.io – Pembuatan, Pembacaan, Penulisan & Penghapusan
  10. Menguasai Pewarisan C#: Membangun Kode yang Dapat Digunakan Lagi dan Dapat Diperbarui