Sebelum membandingkan dua objek, kita perlu terlebih dahulu menentukan apa yang hendak dibandingkan. Terdapat begitu banyak pembolehubah ahli dalam objek, perbandingan langsung adalah mustahil
Selepas melaksanakan antara muka ini dalam kelas, anda boleh membandingkan saiz antara kelas
1.2 Comparator
<.> dan Sebanding< ;T>Perbezaan antara antara muka ialah antara muka Comparator
2.1 Boleh Diklon
Antara muka ini kosong. antara muka, tetapi kelas perlu melaksanakan antara muka ini untuk diklonkan Kaedah yang ditulis semula ialah kaedah klon() dalam kelas Objek
class A implements Cloneable{ int i; int j; @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); } @Override public String toString() { return "{" + "i=" + i + ", j=" + j + '}'; } }
class B implements Cloneable { int k; } class A implements Cloneable{ int i; int j; B c=new B(); @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); } @Override public String toString() { return "{" + "i=" + i + ", j=" + j + ", c.k=" + c.k + '}'; } }
Kemudian klon pada masa ini Adakah salinan dalam atau salinan cetek?
Sebab keputusan ini bergantung pada ingatan Sebelum kelas A diubah suai, ingatan adalah seperti berikut:
Memori kelas A selepas pengubahsuaian. adalah seperti berikut :
Mengikut gambar di atas, untuk melaksanakan salinan dalam, kita perlu mengklon kandungan kelas B sekali lagi, jadi kita perlu mengubah suai kaedah klonclass B implements Cloneable { int k; @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); } } class A implements Cloneable{ int i; int j; B c=new B(); @Override protected Object clone() throws CloneNotSupportedException { A tmp=(A)super.clone(); tmp.c=(B)this.c.clone(); return tmp; } @Override public String toString() { return "{" + "i=" + i + ", j=" + j + ", c.k=" + c.k + '}'; } }
Ada beberapa kaedah yang biasa digunakan dalam kelas Object di sini dan perkenalkan
3.1 sama dengan
Dalam kelas Object, kaedah ini digunakan untuk membandingkan saiz nilai Boolean logik pelaksanaan adalah seperti berikut:
public boolean equals(Object obj) { return (this == obj); }
Lapisan bawah kenyataan output System.out.println() memanggil kaedah toString Walau bagaimanapun, jika output adalah jenis rujukan data, alamat yang diubah suai dikeluarkan secara lalai, jadi ia perlu ditulis semula pada masa ini. Ini juga berlaku dalam contoh di atas Sebab kaedah toString
Atas ialah kandungan terperinci Bagaimana untuk menentukan dan menggunakan kelas dan antara muka abstrak Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!