/ / Елементи Јава објектног модела: Апстрактна класа, интерфејс

Елементи Јава објекта објекта: апстрактна класа, сучеље

Главна идеја апстрактне класе садржана је у следећој тези: понекад нису потребни готови часови, већ у „сировом“ облику. Такве унапред постављене поставке не могу се директно користити (инстанцирати).

јава апстрактни час

Шта је апстрактна класа у Јави

Погледајмо још један пример.У пакету Јава.утил постоји апстрактна класа Цалендар на Јави. Не примењује одређени календар који се користи, на пример, у западној и источној Европи, Кини, Северној Кореји, Тајланду итд. Али има много корисних функција, на пример, додавање неколико дана одређеном датуму: ове функције су потребан за било какву примену календара. Не можете створити инстанцу из апстрактне класе.

Апстрактне класе, апстрактне Јава методе

Рецимо да треба да развијете неколико графикаелементи, на пример, геометријски облици: круг, правоугаоник, звезда итд. А ту је и контејнер који их црта. Свака компонента има другачији изглед, па се одговарајућа метода (назовимо је паинт) различито примењује. Међутим, свака компонента има много тога заједничког: облици морају бити уписани у правоугаоник, могу имати боју, бити видљиви и невидљиви итд. То јест, треба да направите родитељску класу за све ове облике, где свака компонента наследиће заједничка својства.

апстрактне класе апстрактне јава методе
Али шта је са методом бојења?На крају, родитељска класа нема визуелни приказ. Ако декларишете метод боје у свакој класи независно, мораћете да анализирате која се компонента обрађује, а затим извршите конверзију типа. Због тога се метода мора прогласити апстрактном у родитељској класи: поставите заглавље методе без тела. А тело сваке изведене класе ће описати своје. У Јави, апстрактна класа може умотати апстрактне методе.

Ако час има апстрактне методе, ондачас је апстрактан. Кључна реч абстрацт налази се испред речи класе, а такође и у заглављу методе. Тачка и зарез мора се ставити иза наслова такве методе. У Јави, апстрактна класа не може да направи инстанцу. Ако желимо да забранимо њихово стварање, чак и ако класа нема апстрактне методе, класа се може прогласити апстрактном. Али ако класа има бар једну апстрактну методу, тада класа мора бити апстрактна. Немогуће је да час буде апстрактан и завршни, а такође и метода. Метода не може бити апстрактна, приватна, статична, изворна. Да би се наслеђене класе прогласиле не-апстрактним и инстанцирале, морају да примене све апстрактне методе родитеља. Сама класа може да користи своје апстрактне методе.

Пример:

  • сажетак класе АЦласс {
  • јавна апстрактна воид метода (инт а);
  • }
  • класа БЦласс проширује АЦласс {
  • метода јавне празнине (инт а) {
  • // тело
  • }

Дозвољене су променљиве типа апстрактне класе. Могу се односити на не-апстрактни потомак ове класе или бити нулти.

Јава интерфејси - алтернатива вишеструком наслеђивању

јава интерфејси и апстрактне класе

У Јави не постоји вишеструко наслеђивање, јер тада настају одређени проблеми. Класа не може да наследи вишеструке класе. Али може да имплементира неколико интерфејса.

Јава интерфејси и апстрактне класе - концептислично, али не и исто. Интерфејс се може прогласити јавним, тада је доступан свима или можете изоставити јавни модификатор, тада је интерфејс доступан само унутар његовог пакета. Кључна реч сажетак није потребна, јер је интерфејс већ апстрактан, али можете га одредити.

Изјава о интерфејсу

разлика између апстрактне класе и јава интерфејса

Почиње насловом и може ићи првојавна кључна реч праћена речју интерфејса. Тада се реч проширује и може доћи до набрајања интерфејса од којих се дати даје. Овде понављања нису дозвољена, а такође је немогуће да наследни однос формира кружну зависност. Затим долази тело интерфејса, затворено коврџавим заградама. Елементи су декларисани у телу интерфејса: константна поља и апстрактне методе. Сва поља су јавна коначна статичка - сви ови модификатори нису обавезни. Све методе се сматрају јавним апстрактима - ови модификатори се такође могу навести. Сада је довољно речено о разлици између апстрактне класе и Јава интерфејса.

  • јавни интерфејс АИ проширује Б, Ц, Д {
  • // тело
  • }

Да бисте класу прогласили наслеђивањем са интерфејса, користите кључну реч имплементс:

  • класа АЦласс имплементира БИ, ЦИ, ДИ {}

Односно, ако је име интерфејса наведено након имплементација у декларацији класе, онда га класа имплементира. Наследници ове класе наслеђују њене елементе, па је и они примењују.

Такође су дозвољене променљиве интерфејса.Могу се односити на тип класе која имплементира овај интерфејс или нулл. Такве променљиве имају све елементе класе Објецт, јер су објекти изведени из класа, а оне се наслеђују из класе Објецт.

У овом чланку смо погледали неке од елемената Јава објектног модела - апстрактне класе, апстрактне методе, интерфејси.