Editor PHP Zimo membawa anda meneroka masa penggunaan kelas abstrak dan antara muka dalam Java. Dalam pengaturcaraan Java, memilih masa untuk menggunakan kelas abstrak dan masa untuk menggunakan antara muka adalah keputusan penting. Artikel ini akan menjawab soalan biasa ini untuk anda dan membantu anda memahami dengan lebih baik cara memilih kelas atau antara muka abstrak yang sesuai dalam situasi yang berbeza.
Saya samar-samar memahami perbezaan antara abstraksi dan antara muka, tetapi apa yang saya tidak faham ialah bila hendak menggunakan abstraksi dan bila hendak menggunakan antara muka. Apakah pembolehubah yang saya perlukan untuk memilih abstraksi antara muka dan sebaliknya? Kebanyakan jawapan dalam talian bertujuan untuk menunjukkan perbezaan, tetapi saya juga memahaminya. Saya tidak tahu bila lebih sesuai.
Peraturan lama umum ialah: kekalkan antara muka sehingga anda terpaksa menulis kelas abstrak.
Jenis yang tidak boleh serta-merta dalam java mentakrifkan antara muka awam yang jenis lain boleh interface
pilih untuk dipatuhi.
abstract
,因此您不需要使用单词 abstract
abstract
。现在情况已不再是这样,接口现在可以具有在 implement
private
implement
, walaupun anda biasanya mahu melakukan ini. abstract 类
只是一个无法实例化的类。抽象类不需要定义任何 abstract
public
、private
、protected
abstract
。抽象类中的方法不是隐式 abstract
secara tersirat extend
ing 类必须使用 super
panggil pembina dalam pembina mereka sendiri. Kelas abstrak boleh mempunyai pembolehubah contoh sebarang keterlihatan dan ia berfungsi sama seperti pembolehubah contoh dalam mana-mana kelas induk. extend
一个类,可以是 abstract
类,也可以是具体类。类的 abstract
) untuk berkomunikasi dengan tingkap serta keseluruhan api hayunan. abstract class
es 应该是例外而不是常态。如果您需要维护某些内部状态,同时还让子类定义您自己的行为,则应该使用抽象类。一个很好的例子来自 java swing gui 库:AbstractButton
。 abstractbutton
是行为模糊地类似于窗口中按钮的事物的抽象父代,包括按钮、切换按钮和菜单中的项目。任何人都可以子类化 abstractbutton
并实现其成员来定义类似按钮的显示。但是 abstractbutton
还必须维护大量内部状态(其中大部分来自 jcomponent
. Jika anda ingin menyediakan pelaksanaan lalai untuk beberapa kaedah ini dan menggunakan versi java yang dikeluarkan selepas 2014, gunakan antara muka. Jika anda memerlukan pelaksanaan lalai tetapi masih tersekat pada tahun 2000-an, gunakan kelas abstrak. Tidak kira versi java, jika anda memerlukan keadaan persendirian (seperti pembolehubah contoh) atau permulaan tersuai (seperti pembina), gunakan kelas abstrak. interface
Andaikan anda mempunyai antara muka seperti:
interface animal { string makenoise(); }Dan beberapa kelas yang melaksanakan haiwan:
class cat implements animal { string makenoise() { return "meow"; } } class dog implements animal { string makenoise() { return "woof"; } }Kini anda boleh menggunakan antara muka sebagai jenis pulangan, jadi kaedah boleh kembali
. cat
或 dog
string makeanimalmakenoise(int animalid) { animal animal = pretendanimalservice.getdogorcat(animalid); animal.makenoise(); }Kelas abstrak:
Andaikan anda mempunyai kelas abstrak:
abstract class animal { public string makenoise() { return "whistle"; } abstract public string getname(); }Kini, mana-mana kelas yang melanjutkannya perlu melaksanakan kaedah
: getname
class Cat extends Animal { String getName() { return "Pussy"; } } class Dog extends Animal { String getName() { return "Fido"; } }Kedua-dua kelas di atas melaksanakan kaedah
yang diperlukan, tetapi mereka juga mempunyai akses kepada kaedah makenoise
kelas induk, yang juga boleh ditindih jika perlu. getname
方法,但它们也可以访问父类 makenoise
Atas ialah kandungan terperinci Bila hendak menggunakan abstraksi dan bila hendak menggunakan antara muka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!