Неліктен интерфейстер қажет? Неліктен интерфейс мұрасы қажет? Полиморфизм не үшін қажет? Интерфейстерді қалай жасау керектігін оқып, түсінген, бірақ неге екенін түсінбегендер үшін.
Жауапкершіліктен бас тарту: Осы және одан кейінгі мақалаларда сыныптар мен әдістердің атаулары орыс тілінде беріледі.
Объектіге бағытталған бағдарламалаудың (OOP) принциптеріне келетін болсақ: полиморфизм, мұрагерлік және инкапсуляция, нақты әлемдегі ұқсастықтарды пайдалану пайдалы. OOP-тің үлкен артықшылығы - біз бағдарламада нақты ғаламның бір бөлігін имитациялай аламыз. Ivanовтар отбасын үлгі етейік: әкем , анам және балам Петя . Әкесінен Петя шай ішкен кезде сөйлейтін әдетін, ал анасынан кітап оқып отырып еріндерін жыбырлату әдетін мұра етті. Егер біз бұл жағдайды бағдарламаға енгізуге тырыссақ, біз үш сыныпқа ие боламыз:class Папа
class Мама
class Петя
Әкем мен анамның Питке беруі керек әдеттері бар . Әдеттер - бұл қандай да бір әрекеттер, сондықтан оларды бағдарламалық жасақтама әлемінде әдістер ретінде жүзеге асырған дұрыс: Әке Бірінші :
class Папа {
public void прихлюпывать() {
System.out.println("Хлюп");
}
}
Енді анам :
class Мама {
public void поджимать() {
System.out.println("Поджать губки");
}
}
Егер біз мұрагерлік туралы айтатын болсақ, онда codeты келесідей жазу қисынды:
class Петя extends Папа, Мама {
@Override
public void прихлюпывать() {
System.out.println("Хлюп");
}
@Override
public void поджимать() {
System.out.println("Поджать губки");
}
}
Яғни, Петяны әке мен анадан бір мезгілде мұра ету . Егер сіз оны осылай жазсаңыз, компилятор шағымданады, себебі Java бірнеше класс мұрасын жүзеге асыра алмайды. Айтпақшы, бұл C++ тілінде мүмкін, бірақ Java-да мүмкін емес, өйткені көп мұрагерлікпен үлкен мәселелер туындауы мүмкін: олар Интернетте егжей-тегжейлі жазады . Бұл «мүмкін емес» әрекетті айналып өту үшін Java интерфейстері бар. Ал әдеттер үшін біз өз интерфейсімізді ойлап табамыз. Тіпті екі: Олар келесідей болады:
public interface ПривычкиПапы {
public void прихлюпывать();
}
public interface ПривычкиМамы {
public void поджимать();
}
Интерфейсте біз әдеттер туралы ғана сипаттадық, бірақ олардың нақты не істейтінін сипаттамадық, өйткені біз сабақтарда нақты іске асыруды жазамыз. Алдымен әкем мен анама заңды әдеттерін берейік .
class Папа implements ПривычкиПапы {
@Override
public void прихлюпывать() {
System.out.println("Хлюп");
}
}
class Мама implements ПривычкиМамы{
@Override
public void поджимать() {
System.out.println("Поджать губки");
}
}
Ал енді әке мен анадан Питке әдеттерді бір уақытта ауыстыру мүлдем заңды
class Петя implements ПривычкиПапы, ПривычкиМамы {
@Override
public void прихлюпывать() {
System.out.println("Хлюп");
}
@Override
public void поджимать() {
System.out.println("Поджать губки");
}
}
Яғни Java-да бірнеше енгізу (көбінесе іске асыру деп аталады) әбден мүмкін. Интерфейстердің мағынасы енді анық болуы керек - Java тілінде интерфейстерді пайдаланып бірнеше мұраны жүзеге асыруға болады. Егер жағдайды одан әрі дамытатын болсақ, мысалы: әкем мен анамның Петяға бермейтін әдеттері болуы мүмкін , ал Петяның жеке әдеттері болуы мүмкін. Сіз келесі эпизодтарда осы өмірлік маңызды Санта-Барбараны Java ұшағына қалай тасымалдау керектігін білесіз. Бұл интерфейстерді түсінудің жалғыз мысалы емес.Егер сіз келесі мақалаларды оқымаған болсаңыз, міндетті түрде оқыңыз: Java тіліндегі интерфейстер (ашық болмаса, профиліңізден шығуға немесе инкогнито режимінде оқуға болады) Неліктен интерфейстер қажет Java - осы жерде мақаладағы барлық мысалдарды орындаңыз және әдістерді интерфейстерде де, сыныптарда да өзгертіңіз: әдістердің атаулары, қолтаңбалар (әдіс енгізу ретінде не қабылдайды), әдістердің шығару түрлері. Өз бетіңізше түсініңіз: - класс пен абстрактілі класспен интерфейсті жүзеге асыру кезіндегі айырмашылықты; - әдепкі әдістер.
GO TO FULL VERSION