Абстракттуу класс менен интерфейстин айырмасы

Абстракттуу класс менен интерфейстин айырмасы
Абстракттуу класс менен интерфейстин айырмасы

Video: Абстракттуу класс менен интерфейстин айырмасы

Video: Абстракттуу класс менен интерфейстин айырмасы
Video: Сабак 6. Синонимдер жана антонимдер 2024, Июль
Anonim

Абстракт класс жана интерфейс

Абстракт класс жана Interface Java сыяктуу көптөгөн объектиге багытталган программалоо тилдеринде табылган эки объектиге багытталган конструкциялар. Абстракттуу классты кадимки (конкреттүү) класстын абстракттуу версиясы катары кароого болот, ал эми интерфейсти келишимди ишке ашыруунун каражаты катары кароого болот. Абстракттуу класс – бул инициализациялоого мүмкүн болбогон, бирок кеңейтүүгө мүмкүн болгон класс. Interface башка класстар тарабынан ишке ашырылышы керек болгон бир түрү болуп саналат. Java тилинде абстракттуу класстар Abstract ачкыч сөзү менен жарыяланат, ал эми интерфейстин ачкыч сөзү интерфейсти аныктоо үчүн колдонулат.

Абстракттуу класс деген эмне?

Адатта, Абстракттуу класстар, ошондой эле Абстракттуу Негизги Класстар (ABC) деп аталат, инстанцияланбайт (ал класстын үлгүсүн түзүү мүмкүн эмес). Демек, абстракттуу класстар программалоо тили мурасты колдогондо гана мааниге ээ (классты кеңейтүүдөн субкласстарды түзүү мүмкүнчүлүгү). Абстракттуу класстар, адатта, абстракттуу түшүнүктү же жарым-жартылай ишке ашырылган объектти билдирет. Демек, абстракттуу класстар ата-эне класстардын ролун аткарат, алардан бала класстар келип чыгат, андыктан бала класс ата-эне классынын толук эмес өзгөчөлүктөрүн бөлүшөт жана аларды толуктоо үчүн функцияларды кошууга болот.

Абстракттуу класстар абстракттуу методдорду камтышы мүмкүн. Абстракттуу классты кеңейтүүчү подкласстар бул (мурас болгон) абстракттуу методдорду ишке ашыра алат. Эгерде бала класс ушундай абстракттуу ыкмалардын баарын ишке ашырса, бул конкреттүү класс. Бирок андай болбосо, бала класс да абстракттуу класска айланат. Мунун баары эмнени билдирет, программист классты абстракт катары көрсөткөндө, ал класс толук эмес болуп калат жана анын мурастоочу субкласстар тарабынан толтурулушу керек болгон элементтери болот деп жатат. Бул эки программисттин ортосунда келишим түзүүнүн жакшы жолу, бул программалык камсыздоону иштеп чыгуудагы милдеттерди жөнөкөйлөтөт. Мурастоо үчүн код жазган программист ыкма аныктамаларын так аткарышы керек (бирок, албетте, өзүнүн ишке ашырууга ээ болушу мүмкүн).

Интерфейс деген эмне?

Интерфейс – бул интерфейсти ишке ашырган класстар тарабынан ишке ашырылышы керек болгон келишимди көрсөтүү үчүн колдонулган абстрактуу түрү. Interface ачкыч сөзү интерфейсти аныктоо үчүн колдонулат, ал эми Implements ачкыч сөзү класс тарабынан интерфейсти ишке ашыруу үчүн колдонулат (Java программалоо тилинде). Адатта, интерфейс метод колдорун жана туруктуу декларацияларды гана камтыйт. Белгилүү бир интерфейсти ишке ашырган ар кандай интерфейс интерфейсте аныкталган бардык методдорду ишке ашырышы керек же абстракттуу класс катары жарыяланышы керек. Java тилинде объекттин шилтемесинин түрүн интерфейстин түрү катары аныктоого болот. Бирок ал объект нөл болушу керек же ошол интерфейсти ишке ашырган класстын объектисин кармашы керек. Java'да Implements ачкыч сөзүн колдонуп, бир класска бир нече интерфейсти ишке ашыра аласыз.

Абстракттуу класс менен интерфейстин ортосунда кандай айырма бар?

Абстракттуу класстар, адатта, абстракттуу түшүнүктү же жарым-жартылай же ишке ашырылбаган объектти билдирет. Башка жагынан алганда, интерфейс класстар тарабынан ишке ашырылышы керек болгон келишимди көрсөтүү үчүн колдонулган абстракттуу түрү болуп саналат. Абстракттуу класстар мураска алынышы керек (же узартылышы керек), ал эми интерфейстер ишке ашырылышы керек. Абстракттуу класстар абстракттуу методдорду камтышы мүмкүн, ал эми интерфейс абстракттуу методдорду гана камтышы керек. Абстракттуу класстар каалаган өзгөрмөлөрдү камтышы мүмкүн, бирок Interfaces константаларды гана аныктай алат. Класс бирден ашык абстракттуу классты мурастай албайт, бирок бир нече интерфейсти ишке ашыра алат. Интерфейс башка интерфейсти ишке ашыра албайт. Бирок интерфейс классты узарта алат.

Сунушталууда: