JavaRush /Java Blog /Random-ID /Mengapa pewarisan antarmuka diperlukan?
Павел
Level 11

Mengapa pewarisan antarmuka diperlukan?

Dipublikasikan di grup Random-ID
Mengapa antarmuka diperlukan? Mengapa pewarisan antarmuka diperlukan? Mengapa polimorfisme diperlukan? Bagi mereka yang membaca dan memahami cara melakukan pewarisan antarmuka, tetapi tidak mengerti alasannya. Terakhir kali, dengan menggunakan contoh keluarga Ivanov biasa, kami melihat mengapa antarmuka diperlukan. Kami terus mendigitalkan keluarga yang bermasalah. Setiap orang memiliki beberapa kebiasaan yang tidak diwarisinya dari siapa pun atau tidak diwariskan kepada siapa pun – kebiasaan pribadinya. Tugas kita adalah membekali setiap anggota keluarga dengan kebiasaan unik. Mari beralih ke bidang Java: kita perlu mengimplementasikan metode unik di kelas yang hanya dimiliki oleh kelas ini. Baiklah, silakan! Ini Petya:
class Петя implements ПривычкиПапы, ПривычкиМамы {

//это личные Петины привычки
public void ковырятьВНосу () {
System.out.println("Ковырь-ковырь");
    }

//это унаследованные привычки
@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать () {
System.out.println("Поджать губки");
    }
}
Ini Ayah:
class Папа implements ПривычкиПапы {

//это личные Папины привычки
public void чесатьБороду () {
System.out.println("Чешу бороду");
    }

//это переданные привычки
   @Override
    public void прихлюпывать() {
     System.out.println("Хлюп");
   }
}
Ini ibu:
class Мама implements ПривычкиМамы{

//это личные Мамины привычки
public void хлопатьРесницами () {
System.out.println("Хлоп-хлоп");
    }

//это переданные привычки
@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Sempurna! Semuanya berfungsi sebagaimana mestinya! Pada artikel pertama disebutkan bahwa program tersebut merupakan cerminan dari dunia nyata. Sifat realitas yang paling menarik adalah ia berubah sepanjang waktu. Keluarga Ivanov tidak terkecuali; mereka memiliki seorang putri manis bernama Masha. Dan dia mewarisi kebiasaan mengedipkan bulu mata dari Ibunya dan mengendus dari Ayah. Kita perlu melakukan perubahan pada program kita. Mengapa pewarisan antarmuka diperlukan?  - 1Ayolah, tidak terlalu sulit, yang utama adalah berpikir logis. Bagaimanapun, semua orang tahu mengapa antarmuka diperlukan. Sekarang mari kita buat antarmuka Masha's Habits , jelaskan metode clapElashes() dan squish() di sana , implementasikan ke Masha dan selesai. Jadi bagaimana jika metode dengan nama yang sama sudah diimplementasikan di antarmuka lain, Anda bisa melakukannya satu kali. Mengapa pewarisan antarmuka diperlukan?  - 2Memang entah apa rencana keluarga Ivanov, jika Seryozha lahir , yang akan mewarisi kebiasaan dari Ayah, Ibu, Kakek buyut, dan orang lain dari generasi keempat, setiap kali membuat antarmuka, seperti: antarmuka Kebiasaan Seryozha , dan di sana mendeklarasikan metode yang sudah dapat dideklarasikan ratusan kali di antarmuka lain? Dalam beberapa atau tiga generasi kita berisiko mendapatkan antarmuka dengan banyak metode identik yang telah dijelaskan di antarmuka lain, dan jika kita perlu mengubah nama karena suatu kebiasaan (dan ini sangat mungkin - lagipula, dunia sedang berubah) , lalu bagaimana cara mengetahui spageti ini, saya tidak bisa membayangkannya. Yang tersisa hanyalah duduk dan memimpikan keajaiban. Mengapa pewarisan antarmuka diperlukan?  - 3Sekarang, jika setiap kebiasaan memiliki antarmukanya sendiri. Mari kita bayangkan:
public interface ПривычкаПрихлюпывать {
    public void прихлюпывать();
}
public interface ПривычкаПоджимать {
    public void поджимать();
}
public interface ПривычкаКовырятьВНосу {
    public void ковырятьВНосу();
}
public interface ПривычкаХлопатьРесницами {
    public void хлопатьРесницами();
}
public interface ПривычкаЧесатьБороду {
    public void чесатьБороду();
}
Dan kemudian, seperti di Lego, kita dapat, dengan menggunakan banyak warisan dari kebiasaan individu, mengetikkan antarmuka yang kita perlukan untuk kebiasaan masing-masing anggota keluarga. Sesuatu seperti ini:
public interface ПривычкиМамы extends ПривычкаПоджимать, ПривычкаХлопатьРесницами {
    }
public interface ПривычкиПапы extends ПривычкаЧесатьБороду, ПривычкаХлюпать {
    }
public interface ПривычкиПети extends ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу {
    }
public interface ПривычкиМаши extends ПривычкаХлюпать, ПривычкаХлопатьРесницами {
    }
Dan selanjutnya cukup implementasikan antarmuka yang diinginkan ke kelas yang diinginkan, misalnya Bu:
class Мама implements ПривычкиМамы{
@Override
public void хлопатьРесницами () {
System.out.println("Хлоп-хлоп");
    }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Hal yang sama bisa dilakukan pada Papa, Petya dan Masha . Dan kemudian, dengan perluasan keluarga Ivanov, tidak akan ada masalah dengan kebiasaan, kami hanya akan mengacaknya melalui warisan di tingkat antarmuka, seperti bahan dalam salad, dan tidak akan menghasilkan banyak metode dengan nama yang sama. Eh, mimpi, mimpi... Mengapa pewarisan antarmuka diperlukan?  - 4Pria yang digambar benar, ini sebenarnya mungkin - sekarang simulasi keluarga Ivanov telah diselamatkan! Pembaca yang penuh perhatian mungkin bertanya-tanya: "Mengapa membuat antarmuka untuk setiap anggota keluarga? Kami memiliki serangkaian tindakan - segera terapkan untuk kelas yang diperlukan." Mari kita bayangkan bahwa di banyak dunia paralel terdapat kembaran Petya , dan semua Petya perlu mengimplementasikan antarmuka Kebiasaan Petya
interface ПривычкиПети extends ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу

class ПетяВселеннаяХ implements ПривычкиПети
class ПетяВселеннаяY implements ПривычкиПети
// и т.д.
Bagaimana jika tidak ada antarmuka umum?
class ПетяВселеннаяХ implements ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу
class ПетяВселеннаяY implements ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу
// и т.д.
Hal ini menghasilkan kode yang lebih berulang. Warisan antarmuka membuat aplikasi lebih fleksibel untuk diubah, khususnya masalah dengan metode berulang dapat diselesaikan. Harap dicatat lagi bahwa pewarisan banyak antarmuka diperbolehkan.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION