JavaRush /Java блогу /Random-KY /Эмне үчүн интерфейстер керек?
Павел
Деңгээл

Эмне үчүн интерфейстер керек?

Группада жарыяланган
Эмне үчүн интерфейстер керек? Эмне үчүн интерфейсти мурастоо керек? Эмне үчүн полиморфизм керек? Интерфейстерди кантип жасоону окуп, түшүнгөн, бирок эмне үчүн экенин түшүнбөгөндөр үчүн.

Жоопкерчorктен баш тартуу: Бул жана андан кийинки макалаларда класстардын жана методдордун аталышы орус тorнде берилет.

Объектке багытталган программалоонун (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++ тorнде мүмкүн, бирок Javaда эмес, анткени бир нече тукум куучулук менен чоң көйгөйлөр пайда болушу мүмкүн: алар Интернетте майда-чүйдөсүнө чейин жазышат . Бул "мүмкүн эмес" айланып өтүү үчүн Java интерфейстери бар. Ал эми адаттар үчүн биз өзүбүздүн интерфейсибизди ойлоп табабыз. Ал тургай, эки: Алар мындай болот: Эмне үчүн интерфейстер керек?  - 1
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-да бир нече ишке ашыруу (көбүнчө ишке ашыруу деп аталат) мүмкүн. Эмне үчүн интерфейстер керек?  - 2Интерфейстердин мааниси азыр ачык болушу керек - Java-да интерфейстерди колдонуу менен бир нече мурасты ишке ашыра аласыз. Эгер кырдаалды андан ары өнүктүрө турган болсок, мисалы: атам менен апамдын Петяга өтпөгөн адаттары бардыр , Петянын да өзүнүн жеке адаттары болушу мүмкүн. Сиз бул өтө маанилүү Санта Барбараны Java учагына кантип которууну кийинки эпизоддордон үйрөнөсүз. Бул интерфейстерди түшүнүүнүн жалгыз мисалы эмес.Эгер сиз төмөнкү макалаларды окуй элек болсоңуз, анда сөзсүз окуп чыгыңыз: Java тorндеги интерфейстер (эгер ачык болбосо, профorңизден чыгып же инкогнито режиминде окуй аласыз) Эмне үчүн интерфейстер керек Java - бул жердеги макаладагы бардык мисалдарды ишке ашырыңыз жана методдорду интерфейстерде да, класстарда да өзгөртүңүз: методдордун аталыштары, кол тамгалар (метод киргизүү катары эмнени алат), методдордун чыгаруу түрлөрү. Өз алдынча түшүнүңүз: - класс менен абстракттуу класс менен интерфейсти ишке ашыруудагы айырма; - демейки ыкмалар.
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION