JavaRush /Blog Java /Random-MS /Mengapa antara muka diperlukan?

Mengapa antara muka diperlukan?

Diterbitkan dalam kumpulan
Mengapa antara muka diperlukan? Mengapakah pewarisan antara muka diperlukan? Mengapakah polimorfisme diperlukan? Bagi mereka yang membaca dan memahami cara membuat antara muka, tetapi tidak faham mengapa.

Penafian: Dalam artikel ini dan yang seterusnya, penamaan kelas dan kaedah akan diberikan dalam bahasa Rusia.

Apabila bercakap tentang prinsip pengaturcaraan berorientasikan objek (OOP): polimorfisme, pewarisan dan enkapsulasi, adalah berguna untuk menggunakan analogi dunia sebenar. Kelebihan besar OOP ialah kita boleh mensimulasikan sebahagian daripada alam semesta sebenar dalam program ini. Mari kita contohi keluarga Ivanov: Ayah , Ibu dan anak lelaki Petya . Daripada Ayah, Petya mewarisi tabiat menyedut ketika minum teh, dan daripada Ibu pula, dia mewarisi tabiat mencebikkan bibir ketika membaca. Jika kita cuba melaksanakan situasi ini ke dalam program, kita akan mendapat tiga kelas:
class Папа
class Мама
class Петя
Ayah dan Ibu ada tabiat yang perlu diturunkan kepada Pete . Tabiat adalah sejenis tindakan - jadi lebih baik untuk melaksanakannya dalam dunia perisian sebagai kaedah: Dad First :
class Папа {
public void прихлюпывать() {
System.out.println("Хлюп");
    }
}
Sekarang ibu :
class Мама {
public void поджимать() {
System.out.println("Поджать губки");
   }
}
Jika kita bercakap tentang warisan, maka adalah logik untuk menulis kod seperti ini:
class Петя extends Папа, Мама {
@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Iaitu, untuk mewarisi Petya daripada Ayah dan Ibu pada masa yang sama. Jika anda menulisnya seperti ini, pengkompil akan mengadu kerana Java tidak dapat melaksanakan warisan kelas berbilang. By the way, ia mungkin dalam C++, tetapi tidak di Java, kerana masalah besar boleh timbul dengan pelbagai warisan: mereka menulis secara terperinci di Internet . Mengapa antara muka diperlukan?  - 1Untuk mengatasi "mustahil" ini, Java mempunyai antara muka. Dan untuk tabiat kami akan menghasilkan antara muka kami sendiri. Malah dua: Mereka akan kelihatan seperti ini:
public interface ПривычкиПапы {
    public void прихлюпывать();
}
public interface ПривычкиМамы {
    public void поджимать();
}
Dalam antara muka, kami hanya menerangkan tabiat, tetapi tidak menerangkan apa yang mereka lakukan secara khusus, kerana kami akan menulis pelaksanaan khusus dalam kelas. Mula-mula, mari kita berikan kepada Ayah dan Ibu tabiat undang-undang mereka.
class Папа implements ПривычкиПапы {

   @Override
    public void прихлюпывать() {
     System.out.println("Хлюп");
   }
}

class Мама implements ПривычкиМамы{

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Dan kini, adalah benar-benar sah untuk memindahkan tabiat daripada Ayah dan Ibu kepada Pete pada masa yang sama
class Петя implements ПривычкиПапы, ПривычкиМамы {

@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Iaitu, pelaksanaan berbilang (lebih kerap dipanggil pelaksanaan) di Jawa agak mungkin. Mengapa antara muka diperlukan?  - 2Maksud antara muka kini harus jelas - dalam Java, anda boleh melaksanakan pelbagai warisan menggunakan antara muka. Jika kita mengembangkan keadaan dengan lebih lanjut, sebagai contoh: Lagipun, Ayah dan Ibu mungkin mempunyai tabiat yang tidak mereka turunkan kepada Petya , dan Petya juga mungkin mempunyai tabiat peribadinya sendiri. Anda akan belajar cara memindahkan Santa Barbara yang penting ini ke pesawat Java dalam episod berikut. Ini bukan satu-satunya contoh untuk memahami antara muka. Jika anda belum membaca artikel berikut, maka pastikan anda membaca: Antara muka dalam Java (jika tidak dibuka, anda boleh keluar dari profil anda atau membaca dalam mod inkognito) Mengapa antara muka diperlukan dalam Java - laksanakan semua contoh dari artikel di sini dan tukar kaedah dalam antara muka dan dalam kelas: nama kaedah, tandatangan (apa kaedah yang diambil sebagai input), jenis kaedah output. Fahami sendiri: - perbezaan apabila melaksanakan antara muka dengan kelas dan kelas abstrak; - kaedah lalai.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION