JavaRush /Java Blog /Random-TL /Bakit kailangan ang mga interface?

Bakit kailangan ang mga interface?

Nai-publish sa grupo
Bakit kailangan ang mga interface? Bakit kailangan ang inheritance ng interface? Bakit kailangan ang polymorphism? Para sa mga nagbabasa at naiintindihan kung paano gumawa ng mga interface, ngunit hindi naiintindihan kung bakit.

Disclaimer: Sa artikulong ito at sa mga kasunod nito, ang pagpapangalan ng mga klase at pamamaraan ay ibibigay sa Russian.

Pagdating sa mga prinsipyo ng object-oriented programming (OOP): polymorphism, inheritance, at encapsulation, nakakatulong na gumamit ng mga real-world na analogies. Ang malaking bentahe ng OOP ay maaari nating gayahin ang bahagi ng tunay na uniberso sa isang programa. Imodelo natin ang pamilya Ivanov: Tatay , Nanay at batang lalaki Petya . Mula kay Tatay, minana ni Petya ang ugali ng pag-slur kapag umiinom ng tsaa, at mula kay Nanay, namana niya ang ugali ng pagbubuga ng kanyang mga labi habang nagbabasa. Kung susubukan nating ipatupad ang sitwasyong ito sa isang programa, matatapos tayo sa tatlong klase:
class Папа
class Мама
class Петя
May mga ugali sina Tatay at Nanay na kailangang ipasa kay Pete . Ang mga gawi ay mga aksyon ng ilang uri - kaya pinakamahusay na ipatupad ang mga ito sa mundo ng software bilang mga pamamaraan: Dad First :
class Папа {
public void прихлюпывать() {
System.out.println("Хлюп");
    }
}
Ngayon nanay :
class Мама {
public void поджимать() {
System.out.println("Поджать губки");
   }
}
Kung pinag-uusapan natin ang tungkol sa pamana, lohikal na isulat ang code tulad nito:
class Петя extends Папа, Мама {
@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Ibig sabihin, ang magmana ng Petya kay Tatay at Nanay nang sabay. Kung isusulat mo ito nang ganito, magrereklamo ang compiler dahil hindi maaaring ipatupad ng Java ang multiple class inheritance. Sa pamamagitan ng paraan, ito ay posible sa C++, ngunit hindi sa Java, dahil ang malalaking problema ay maaaring lumitaw sa maraming pamana: sumulat sila nang detalyado sa Internet . Зачем нужны интерфейсы? - 1Upang makalibot sa "imposible" na ito, may mga interface ang Java. At para sa mga gawi ay gagawa tayo ng sarili nating interface. Kahit dalawa: Magiging ganito sila:
public interface ПривычкиПапы {
    public void прихлюпывать();
}
public interface ПривычкиМамы {
    public void поджимать();
}
Sa interface, inilarawan lamang namin ang mga gawi, ngunit hindi inilarawan kung ano ang partikular na ginagawa nila, dahil isusulat namin ang tiyak na pagpapatupad sa mga klase. Una, ibigay natin kina Tatay at Nanay ang kanilang mga legal na gawi.
class Папа implements ПривычкиПапы {

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

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

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
At ngayon, ganap na legal na ilipat ang mga gawi mula kina Tatay at Nanay kay Pete nang sabay
class Петя implements ПривычкиПапы, ПривычкиМамы {

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

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
То есть множественная реализация (чаще говорят имплементация) в Java вполне возможна. Зачем нужны интерфейсы? - 2Смысл интерфейсов теперь должен быть понятен – в Java с помощью интерфейсов можно реализовать множественное наследование. Если развивать ситуацию дальше, например: ведь у Папы и Мамы наверняка есть привычки, которые они не передали Пете, да и у Пети могут быть свои личные привычки. Как эту жизненную Санта-Барбару перенести в плоскость Java вы узнаете в следующих сериях. Это не единственный пример для понимания интерфейсов.Если не читали следующие статьи, то обязательно прочтите: Интерфейсы в Java (если не открыто, можно выйти из профиля or прочитать в режиме - инкогнито) Для чего в Java нужны интерфейсы - тут реализуйте все примеры из статьи и поизменяйте методы и в интерфейсах и в калассах: наименования методов, сигнатуры (то что метод принимает на вход), типы вывода методов. Разберитесь самостоятельно: - с разницей при имплементации интерфейса с классом и абстрактным классом; - дефолтными методами.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION