Цомпарисон Цхарт
Основа за поређење | Класа | Интерфејс |
---|---|---|
Басиц | Класа је инстанцирана да креира објекте. | Интерфејс никада не може бити инстанциран јер методе нису у стању да изврше било какву акцију на позивање. |
Кључна реч | класа | интерфејс |
Спецификатор приступа | Чланови класе могу бити приватни, јавни или заштићени. | Чланови сучеља су увијек јавни. |
Метходс | Методе класе су дефинисане за извођење одређене акције. | Методе у интерфејсу су чисто апстрактне. |
Имплементирати / проширити | Класа може имплементирати било који број интерфејса и може проширити само једну класу. | Интерфејс може проширити више интерфејса, али не може да имплементира било који интерфејс. |
Конструктор | Класа може имати конструкторе за иницијализацију варијабли. | Интерфејс никада не може имати конструктора јер једва да постоји нека варијабла за иницијализацију. |
Дефиниција класе
Класа је најважнији аспект Јава програмирања без класа које не можете имплементирати јава програм. Класа креира референтне типове и ови референтни типови се користе за креирање објеката. Класа има потпис и тело. Потпис класе има име класе и информацију која говори да ли је класа наследила другу класу. Тело класе има поља и методе који раде на тим пољима. Класа је креирана помоћу класе кључних речи. Да видимо како да прогласимо класу.
цласс цласс_наме {/ * фиелдс ... методе * /}
Када је класа инстанцирана, сваки креирани објекат садржи копију поља и метода са њима. Поља и чланови декларисани унутар класе могу бити статични или нестатички. Вредност статичких чланова је константна за сваки објекат, док се нестатични чланови иницијализују од стране сваког објекта различито у складу са његовим захтевом.
Чланови класе имају приступне спецификаторе који одређују видљивост и приступачност чланова кориснику или подкласама. Спецификатори приступа су јавни, приватни и заштићени. Класа може бити наслеђена од стране друге класе користећи спецификатор приступа који ће одлучити о видљивости чланова суперкласе (наслеђене класе) у поткласи (наследна класа). Тако класа испуњава концепт скривања података и енкапсулације у објектно оријентисаном програмирању.
Дефиниција интерфејса
Интерфејс је такође међу референтним типовима дефинисаним у Јави. Важност интерфејса је да у Јави, класа може наслеђивати само једну класу. Да би избегли ово ограничење, дизајнери Јаве представили су концепт интерфејса. Интерфејс је синтактички сличан класи, али недостаје у декларацији поља и методе унутар интерфејса немају никакву имплементацију. Интерфејс је декларисан помоћу интерфејса за кључне речи. Погледајмо декларацију интерфејса.
интерфејс интерфаце_наме {типе вар_наме = валуе; типе метход1 (листа параметара); типе метход2 (листа параметара); . . }
Интерфејс не дефинише ниједну методу која је декларисана у њему јер јој недостају поља за рад. Само зато што било која метода унутар интерфејса не изводи никакву акцију, интерфејс се никада не може инстанцирати. Ако интерфејс има било којег члана поља, он се мора иницијализовати у тренутку њихове декларације. Интерфејс никада не садржи конструкторе као што му недостају чланови поља за иницијализацију. Дакле, интерфејс дефинише само оно што класа мора да ради уместо како мора да ради.
Интерфејс који је једном креиран може се имплементирати било којим бројем класа користећи кључне речи. Али класе које имплементирају интерфејс морају дефинисати све методе унутар интерфејса. Интерфејс такође може наследити други интерфејс помоћу кључне речи екпанд. Ако класа имплементира интерфејс који проширује други интерфејс. Тада класа мора дефинисати методе оба интерфејса који се појављују у ланцу. Методе унутар интерфејса морају увек бити јавне јер морају да им приступају класе које их спроводе.
Кључне разлике између разреда и интерфејса у Јави
- Класа се може инстанцирати стварањем њених објеката. Интерфејс никада није инстанциран јер су методе декларисане унутар интерфејса апстрактне и не обављају никакве радње, тако да нема користи од инстанцирања било ког интерфејса.
- Класа је декларисана користећи класу кључних речи. На исти начин, интерфејс се креира помоћу интерфејса за кључне речи.
- Чланови класе могу имати спецификатор приступа као јавни, приватни, заштићени. Али чланови сучеља су увијек јавни, јер им морају приступити класе које их имплементирају.
- Методе унутар класе су дефинисане да изврше акцију на пољима декларисаним у класи. Како интерфејс нема декларацију поља, методе унутар интерфејса су чисто апстрактне.
- Класа може имплементирати било који број интерфејса, али може проширити само једну супер класу. Интерфејс може проширити било који број интерфејса, али не може да имплементира било који интерфејс.
- Класа има конструкторе дефинисане унутар њега да би променила иницијализацију. Али, интерфејс нема конструкторе јер нема поља за иницијализацију. Поља интерфејса се иницијализују само у време њихове декларације.
Закључак:
И класе и интерфејси имају своју важност. Класа се користи када треба да дефинишемо како ће се задатак обавити. Интерфејс се користи када треба да знамо који задатак треба да се уради.