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

Jawa - Warisan

Warisan dapat didefinisikan sebagai proses di mana satu kelas memperoleh properti (metode dan bidang) dari yang lain. Dengan menggunakan pewarisan, informasi dibuat dapat dikelola dalam urutan hierarkis.

Kelas yang mewarisi sifat-sifat orang lain dikenal sebagai subkelas (kelas turunan, kelas anak) dan kelas yang sifat-sifatnya diwarisi disebut superclass (kelas dasar, kelas induk).

memperluas Kata Kunci

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

Sintaks

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

Kode Contoh

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

Menggunakan kata kunci extends, My_Calculation mewarisi metode penambahan() dan Pengurangan() dari kelas Perhitungan.

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

Contoh

Demo Langsung
class Calculation {
   int z;
	
   public void addition(int x, int y) {
      z = x + y;
      System.out.println("The sum of the given numbers:"+z);
   }
	
   public void Subtraction(int x, int y) {
      z = x - y;
      System.out.println("The difference between the given numbers:"+z);
   }
}

public class My_Calculation extends Calculation {
   public void multiplication(int x, int y) {
      z = x * y;
      System.out.println("The product of the given numbers:"+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, maka akan menghasilkan hasil sebagai berikut

Keluaran

The sum of the given numbers:30
The difference between the given numbers:10
The product of the given numbers:200

Dalam program yang diberikan, ketika sebuah objek ke My_Calculation class dibuat, salinan konten superclass dibuat di dalamnya. Itulah sebabnya, dengan menggunakan objek subkelas, Anda dapat mengakses anggota superkelas.

Variabel referensi Superclass dapat menampung objek subclass, tetapi menggunakan variabel tersebut Anda hanya dapat mengakses anggota superclass, 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 diberikan di bawah ini. Tetapi menggunakan variabel referensi superclass ( cal dalam hal ini) Anda tidak dapat memanggil metode multiplication() , yang termasuk dalam subkelas My_Calculation.

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

Catatan Sebuah subclass mewarisi semua anggota (field, method, dan nested class) dari superclass-nya. Konstruktor bukan anggota, jadi mereka tidak diwarisi oleh subclass, tetapi konstruktor superclass dapat dipanggil dari subclass.

Kata kunci super

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

Membedakan Anggota

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

super.variable
super.method();

Contoh Kode

Bagian ini memberikan Anda sebuah program yang mendemonstrasikan penggunaan super kata kunci.

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

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

Contoh

Demo Langsung
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

Saat 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 Superclass

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

super(values);

Kode Contoh

Program yang diberikan di bagian ini mendemonstrasikan bagaimana menggunakan kata kunci super untuk memanggil konstruktor parametris dari superclass. Program ini berisi superclass dan subclass, di mana superclass berisi konstruktor berparameter yang menerima nilai integer, dan kami menggunakan kata kunci super untuk memanggil konstruktor berparameter dari superclass.

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

Contoh

Demo Langsung
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

Saat 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 jenis objek itu. Mari kita lihat bagaimana memperluas kata kunci digunakan untuk mencapai pewarisan.

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, berikut ini benar −

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

Dengan menggunakan kata kunci extends, subclass akan dapat mewarisi semua properti superclass kecuali properti pribadi superclass.

Kami dapat memastikan bahwa Mamalia sebenarnya adalah Hewan dengan menggunakan operator instance.

Contoh

Demo Langsung
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

Karena kami memiliki pemahaman yang baik tentang perluasan kata kunci, mari kita lihat bagaimana menerapkan kata kunci digunakan untuk mendapatkan hubungan IS-A.

Umumnya, menerapkan kata kunci digunakan dengan kelas untuk mewarisi properti antarmuka. Antarmuka tidak pernah dapat diperluas oleh kelas.

Contoh

public interface Animal {
}

public class Mammal implements Animal {
}

public class Dog extends Mammal {
}

Contoh Kata Kunci

Mari kita gunakan instanceof operator untuk memeriksa apakah Mamalia sebenarnya Hewan, dan anjing sebenarnya Hewan.

Contoh

Demo Langsung
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 didasarkan pada penggunaan. Ini menentukan apakah kelas tertentu HAS-A hal tertentu. Hubungan ini membantu mengurangi duplikasi kode serta bug.

Mari kita lihat contohnya

Contoh

public class Vehicle{}
public class Speed{}

public class Van extends Vehicle {
   private Speed sp;
} 

Ini menunjukkan bahwa kelas Van HAS-A Speed. Dengan memiliki kelas terpisah untuk Kecepatan, kita tidak harus meletakkan seluruh kode milik kecepatan di dalam kelas Van, yang memungkinkan untuk menggunakan kembali kelas Kecepatan di beberapa aplikasi.

Pada fitur Object-Oriented, pengguna tidak perlu pusing memikirkan objek mana yang melakukan pekerjaan sebenarnya. Untuk mencapai ini, kelas Van menyembunyikan detail implementasi dari pengguna kelas Van. Jadi, pada dasarnya 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.

Fakta yang sangat penting untuk diingat adalah bahwa Java tidak mendukung multiple inheritance. Ini berarti bahwa kelas tidak dapat memperpanjang lebih dari satu kelas. Oleh karena itu mengikuti adalah ilegal

Contoh

public class extends Animal, Mammal{} 

Namun, sebuah kelas dapat mengimplementasikan satu atau lebih antarmuka, yang telah membantu Java menyingkirkan ketidakmungkinan pewarisan berganda.


java

  1. Kata kunci terakhir Java
  2. Instance Java dari Operator
  3. Kelas Statis Bersarang Java
  4. Kelas Anonim Java
  5. Kelas Tunggal Jawa
  6. Refleksi Jawa
  7. Kelas Java ObjectOutputStream
  8. Java Generik
  9. Kelas File Java
  10. C# - Warisan