warisan Jawa


Warisan ialah asas teknologi pengaturcaraan berorientasikan objek Java kerana ia membenarkan penciptaan kelas hierarki. Pewarisan boleh difahami sebagai proses di mana satu objek memperoleh atribut daripada objek lain.

Jika kelas A ialah kelas induk bagi kelas B, dan kelas B ialah kelas induk bagi kelas C, kita juga mengatakan bahawa C ialah subkelas A, dan kelas C mewarisi daripada kelas A. Di Java, warisan kelas ialah warisan tunggal, iaitu subkelas hanya boleh mempunyai satu kelas induk

Dua kata kunci yang paling biasa digunakan dalam warisan ialah extends dan implements.

Penggunaan dua kata kunci ini menentukan sama ada satu objek mempunyai hubungan IS-A (adalah satu) dengan objek lain.

Dengan menggunakan dua kata kunci ini, kita boleh mencapai satu objek untuk mendapatkan sifat objek lain.

Semua kelas Java diwarisi daripada kelas java.lang.Object, jadi Object ialah kelas nenek moyang semua kelas, dan kecuali Object, semua kelas mesti mempunyai kelas induk.

Menggunakan kata kunci extends, anda boleh mengisytiharkan bahawa kelas mewarisi kelas lain Bentuk umum adalah seperti berikut:

// A.java
public class A {
    private int i;
    protected int j;
 
    public void func() {
 
    }
}
 
// B.java
public class B extends A {
}

Coretan kod di atas menunjukkan bahawa B diwarisi daripada A. Merupakan subkelas. daripada A. Dan A ialah subkelas Objek, yang boleh diisytiharkan tanpa pengisytiharan eksplisit di sini.


Sebagai subkelas, contoh B mempunyai semua pembolehubah ahli A, tetapi tidak mempunyai hak akses kepada pembolehubah ahli persendirian B, yang memastikan pengkapsulan A.



Perhubungan IS-A

IS-A bermaksud: satu objek ialah klasifikasi objek lain.

Berikut ialah pelaksanaan pewarisan menggunakan kata kunci extends.

public class Animal{
}

public class Mammal extends Animal{
}

public class Reptile extends Animal{
}

public class Dog extends Mammal{
}

Berdasarkan contoh di atas, pernyataan berikut adalah betul:

  •                       Kelas haiwan ialah kelas induk bagi kelas Mamalia.

  • Kelas Haiwan ialah kelas induk bagi kelas Reptilia.

  • Kelas mamalia dan kelas Reptilia adalah subkelas kelas Haiwan.

  • Kelas Anjing ialah subkelas bagi kedua-dua kelas Mamalia dan kelas Haiwan.

Analisis hubungan IS-A dalam contoh di atas, seperti berikut:

  • Mamalia ADALAH Haiwan

  • Reptilia ADALAH-Haiwan

  • Anjing ADALAH Mamalia

Oleh itu: Anjing ADALAH Haiwan

Dengan menggunakan kata kunci lanjutkan, subkelas boleh mewarisi semua sifat kelas induk Kaedah dan sifat, tetapi kaedah dan sifat persendirian tidak boleh digunakan.

Dengan menggunakan instanceof operator, kita boleh menentukan Mamalia IS-A Animal

instance

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

Hasil kompilasi dan jalankan contoh di atas adalah seperti berikut :

true
true
true

Selepas memperkenalkan kata kunci lanjutkan, mari kita lihat bagaimana kata kunci melaksanakan digunakan untuk menyatakan perhubungan IS-A.

Kata kunci

Implements digunakan apabila kelas mewarisi antara muka. Kata kunci lanjutkan tidak boleh digunakan dalam kes ini.

Instance

public interface Animal {}

public class Mammal implements Animal{
}

public class Dog extends Mammal{
}

instanceof kata kunci

Anda boleh menggunakan operator instanceof untuk menyemak sama ada objek Mamalia dan anjing adalah contoh daripada Kelas haiwan.

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

Hasil penyusunan dan larian contoh di atas adalah seperti berikut:

true
true
true

Hubungan HAS-A

HAS-A mewakili hubungan pergantungan antara kelas dan ahlinya. Ini membantu penggunaan semula kod dan mengurangkan ralat kod.

Contoh

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

Kelas Van dan kelas Kelajuan mempunyai hubungan HAS-A (Van mempunyai Kelajuan), jadi tidak perlu menampal semua kod Kelajuan ​kelas ke dalam kelas Van, dan kelas Kelajuan juga boleh digunakan semula untuk berbilang aplikasi.

Dalam ciri berorientasikan objek, pengguna tidak perlu risau tentang cara pelaksanaan dalaman kelas dilaksanakan.

Kelas Van menyembunyikan butiran pelaksanaan daripada pengguna Oleh itu, pengguna hanya perlu tahu cara memanggil kelas Van untuk melengkapkan fungsi tertentu, tanpa mengetahui sama ada kelas Van melakukannya sendiri atau memanggil kelas lain untuk melakukannya. tugasan ini.

Java hanya menyokong warisan tunggal, iaitu kelas tidak boleh mewarisi berbilang kelas.

Pendekatan berikut adalah menyalahi undang-undang:

public class extends Animal, Mammal{}

Java hanya menyokong warisan tunggal (mewarisi kelas asas dan kelas abstrak), tetapi kita boleh menggunakan antara muka untuk melaksanakannya (antara muka berbilang warisan untuk dilaksanakan), The struktur skrip adalah seperti:

public class Apple extends Fruit implements Fruit1, Fruit2{}

Secara amnya, kami menggunakan kata kunci lanjutan untuk mewarisi kelas asas dan kelas abstrak, dan menggunakan kata kunci implement untuk mewarisi kelas antara muka.