Antara muka boleh digunakan untuk mentakrifkan kontrak tingkah laku dan juga berfungsi sebagai kontrak untuk interaksi antara dua sistem, manakala kelas abstrak digunakan terutamanya untuk mentakrifkan gelagat lalai untuk subkelas, yang bermaksud bahawa semua subkelas harus melaksanakan Fungsi yang sama.
Bila menggunakan kelas abstrak
- Jika kita menggunakan konsep pewarisan, kelas abstrak ialah pilihan yang baik kerana ia menyediakan pelaksanaan kelas asas biasa untuk kelas terbitan.
- Jika kita ingin mengisytiharkan bukan ahli awam, kelas abstrak juga merupakan pilihan yang baik. Dalam antara muka, semua kaedah mestilah awam.
- Jika kita ingin menambah kaedah baharu pada masa hadapan, maka kelas abstrak adalah pilihan yang lebih baik. Kerana jika kita menambah kaedah baharu pada antara muka, semua kelas yang sudah melaksanakan antara muka mesti diubah suai untuk melaksanakan kaedah baharu.
- Jika kita ingin mencipta berbilang versi komponen kita, kita boleh mencipta kelas abstrak. Kelas abstrak menyediakan cara yang mudah digunakan untuk komponen versi. Dengan mengemas kini kelas asas, semua kelas yang diwarisi dikemas kini secara automatik. Setelah antara muka dibuat, ia tidak boleh diubah. Jika versi baharu antara muka diperlukan, antara muka baharu sepenuhnya mesti dibuat.
- Kelas abstrak mempunyai keserasian ke hadapan yang lebih baik. Sebaik sahaja pelanggan menggunakan antara muka, kami tidak boleh mengubahnya jika mereka menggunakan kelas abstrak, kami masih boleh menambah gelagat tanpa melanggar kod sedia ada.
- Jika kami ingin menyediakan fungsi yang biasa dilaksanakan kepada semua pelaksanaan komponen kami, kami boleh menggunakan kelas abstrak. Kelas abstrak membolehkan kami melaksanakan sebahagian kelas, manakala antara muka tidak mengandungi pelaksanaan mana-mana ahli.
Contoh
abstract class Car {
public void accelerate() {
System.out.println("Do something to accelerate");
}
public void applyBrakes() {
System.out.println("Do something to apply brakes");
}
public abstract void changeGears();
}
Salin selepas log masuk
Kini, mana-mana kereta yang anda ingin buat instantiate mesti melaksanakan kaedah changeGears().
class Alto extends Car {
public void changeGears() {
System.out.println("Implement changeGears() method for Alto Car");
}
}
class Santro extends Car {
public void changeGears() {
System.out.println("Implement changeGears() method for Santro Car");
}
}
Salin selepas log masuk
Bila hendak menggunakan antara muka
- Jika fungsi yang kami cipta akan digunakan merentas objek yang berbeza secara meluas, gunakan antara muka. Kelas abstrak digunakan terutamanya untuk objek yang berkait rapat, manakala antara muka paling sesuai untuk menyediakan fungsi biasa kepada kelas yang tidak berkaitan.
- Antara muka ialah pilihan yang baik jika kami fikir API tidak akan berubah dalam satu tempoh masa.
- Jika kita mahukan fungsi yang serupa dengan berbilang warisan, antara muka juga merupakan pilihan yang baik kerana kita boleh melaksanakan berbilang antara muka.
- Jika kami mereka bentuk modul berfungsi yang kecil dan ringkas, gunakan antara muka. Jika kita mereka bentuk unit berfungsi yang besar, gunakan kelas abstrak.
Contoh
public interface Actor {
void perform();
}
public interface Producer {
void invest();
}
Salin selepas log masuk
Kini, kebanyakan pelakon cukup kaya untuk membuat filem sendiri. Jika kita menggunakan antara muka dan bukannya kelas abstrak, kita boleh melaksanakan kedua-dua Pelakon dan Pengeluar. Selain itu, kami juga boleh menentukan antara muka ActorProducer baharu, yang mewarisi kedua-duanya.
rreeee
Atas ialah kandungan terperinci Bila hendak menggunakan kelas abstrak dan bila hendak menggunakan antara muka dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!