Konsep: Warisan berarti bahwa definisi kelas dapat didasarkan pada kelas lain yang ada, yaitu subkelas mewarisi kelas induk, sehingga mewujudkan penggunaan kembali kode kelas induk. Hubungan antara dua kelas: kelas induk umumnya memiliki karakteristik umum untuk setiap subkelas, sedangkan subclass dapat menambahkan beberapa metode yang lebih personal. Warisan kelas adalah transitif, yaitu subkelas dapat terus mendapatkan subkelas, konsep kelas yang terletak di tingkat atas lebih abstrak, dan konsep kelas yang terletak di tingkat bawah lebih konkret.
1. Tentukan subkelas:
Format Sintaks
[Pengubah] Nama Subkelas Kelas Memperpanjang Nama Kelas Induk {
Subkelas
}
Pengubah: Default Privat Privat yang Dilindungi Publik
Badan subclass adalah konten unik baru yang ditambahkan oleh subkelas berdasarkan mewarisi konten kelas induk. Ini dapat mencakup variabel anggota, metode anggota, kelas, antarmuka, metode konstruksi, dll.
Misalnya, di perusahaan, seorang karyawan adalah staf yang disewa oleh perusahaan, dan seorang manajer adalah karyawan khusus di perusahaan manajemen. Jenis karyawan khusus ini tidak hanya memiliki atribut dan metode karyawan biasa, tetapi juga beberapa atribut dan metode mereka sendiri, seperti tunjangan khusus.
Kodenya adalah sebagai berikut:
Kelas Public Employeeclass {name string privat; // Nama Private Int ID; // nomor perusahaan gaji ganda pribadi; // Gaji Departemen String Privat; // Departemen Publik PublikeClass () {} Publik PublikeClass (nama string, int id, gaji ganda, departemen string) {this.name = name; this.id = id; this.salary = gaji; this.department = departemen; } public string getName () {return name; } public void setName (name string) {this.name = name; } public int getId () {return id; } public void setid (int id) {this.id = id; } public double getSalary () {return gaji; } public void setSalary (gaji ganda) {this.salary = gaji; } public string getDepartment () {return department; } public void setDepartment (string department) {this.department = department; } @Override Public String ToString () {return "wellaaneClass [name =" + name + ", id =" + id + ", gaji =" + gaji + ", departemen =" + departemen + "]"; }}Ini adalah kode untuk kelas karyawan, yang memiliki empat atribut, nama, nomor, gaji, departemen.
Class ManagerClass Public Extends EmployeClass {Private Double SpecialSalary; Public ManagerClass () {super ();} Public ManagerClass (nama string, int ID, gaji ganda, departemen string, Double SpecialSalary) {super (nama, id, gaji, departemen); this.specialsalary = SpecialSalary; } public double getSpecialsalary () {return specialsalary; } public void setSpecialsalary (Double SpecialSalary) {this.specialsalary = SpecialSalary; } @Override Public String ToString () {return super.toString () + "/SpecialSal:" + SpecialSalary; }}Ini adalah subkelas, kelas manajer, dengan atributnya sendiri, tunjangan khusus.
2. Aksesibilitas subkelas ke anggota kelas induk
Subkelas dapat mewarisi anggota kelas induk, tetapi akses ke anggota kelas induk dikendalikan oleh fitur akses.
Kelas induk dan kelas anak berada dalam paket yang sama: pribadi tidak dapat diakses secara langsung, tetapi kita bisa mendapatkan anggota pribadi kelas induk melalui metode anggota dengan atribut akses publik.
Kelas induk dan kelas anak tidak dalam paket yang sama: pribadi dan default tidak dapat diakses secara langsung, tetapi kita bisa mendapatkan anggota pribadi kelas induk melalui metode anggota dengan properti akses publik dan yang dilindungi.
3. Overloading dan Penanggulangan Metode Anggota Kelas
Ketika nama variabel anggota baru yang ditentukan dalam subkelas sama dengan variabel anggota di kelas induk, subclass menyembunyikan variabel anggota yang sesuai di kelas induk.
Kelebihan atau override metode anggota adalah metode anggota yang ditentukan dalam subkelas ketika nama metode anggota yang ditentukan dalam kelas induk sama dengan nama metode anggota di kelas induk.
(1) Kelebihan Metode Anggota
Dalam karyawan dan manajer Chestnut yang disebutkan sebelumnya, kami dapat mendefinisikan metode anggota di kelas karyawan
public void setInfo (nama string, int id, gaji ganda, departemen string) {this.name = string baru (nama); this.id = id; this.salary = gaji; this.department = string baru (departemen); }Di kelas manajer, dapat didefinisikan sebagai:
public void setInfo (nama string, int id, gaji ganda, departemen string, spesial ganda) {super (nama, id, gaji, departemen); this.specialsalary = SpecialSalary; }Ini adalah kelebihan metode anggota
(2) mengesampingkan metode anggota
Biasanya ada dua bentuk:
① Dalam metode anggota yang ditentukan oleh subkelas, hubungi pertama metode anggota yang ditimpa di kelas induk, dan kemudian tambahkan beberapa pernyataan operasi.
② Dalam metode anggota yang ditentukan oleh subkelas, metode anggota yang ditimpa oleh kelas induk tidak dipanggil, tetapi kelompok pernyataan ditulis ulang. Ini memungkinkan cakupan penuh dari kelas induk. Metode ini harus diimplementasikan ketika pengoperasian subkelas benar -benar berbeda dari pengoperasian objek kelas induk.
kastanye:
Di kelas objek, ada metode anggota Equals () yang menentukan apakah dua objek sama, dan kodenya adalah:
public boolean euqals (objek obj) {return (this == obj); }Dapat dilihat bahwa metode anggota ini adalah membandingkan apakah dua objek mengacu pada satu objek secara bersamaan.
Tapi kami sekarang berharap untuk mengimplementasikan fungsi yang membandingkan apakah isi dua objek dari jenis yang sama sama. Jadi kami memiliki kelas jamak di bawah ini, setiap kelas jamak terdiri dari bagian nyata dan bagian imajiner. Fungsi desain dapat membandingkan apakah dua bilangan kompleks sama. Kodenya adalah sebagai berikut:
Public Class ComplexNumber {private double re; IM ganda pribadi; Public ComplexNumber () {re = 0.0; im = 0.0;} Public ComplexNumber (Double RE, Double IM) {this.re = re; this.im = im; } public double getre () {return re; } public void setre (double re) {this.re = re; } public double getim () {return im; } public void setim (double im) {this.im = im; } public boolean setara (objek OtherObject) {if (this == OtherObject) Return true; if (OtherObject == null) Return false; if (getClass ()! = OtherObject.getClass ()) Return false; ComplexNumber Other = (ComplexNumber) Lain -lainnya; if ((re == Other.re) && (im == Other.im)) Return true; lain mengembalikan false; } public string toString () {string str = ""; if (re! = 0) str += re; if (im == 0) mengembalikan str; if (im <0) str += im +"i"; lain str + = " +" + im + "i"; mengembalikan str; } public static void main (String [] args) {ComplexNumber C1, C2; C1 = ComplexNumber baru (2,3); C2 = ComplexNumber baru (2, -3.4); if (c1.equals (c2)) {System.out.println ("(" +c1 +") == (" +c2 +")"); } else {System.out.println ("(" +c1 +") <> (" +c2 +")"); }}}Hasilnya adalah (2.0 + 3.0i) <> (2.0-3.4i)
Di atas adalah diskusi singkat tentang pemahaman utama Java tentang warisan yang dibawa oleh editor kepada Anda. Saya harap semua orang akan mendukung wulin.com lebih banyak ~