logo

300 основних Јава питања за интервју | Сет 1

90% гаранција на питања за интервју

Постоји листа од 300 основних питања за Јава интервју. Ако вам је постављено неко основно питање за Јава интервју, љубазно га поставите у одељку за постављање питања. Уверавамо вас да ћете овде добити 90% често постављаних питања и одговора на интервјуима.

Одговори на питања интервјуа за Цоре Јава су кратки и јасни. Основна питања за Јава интервју су категорисана у Основе Јава питања за интервју, ООПс питања за интервју, Питања за интервју са стрингом, питања за интервју са више нити, питања за интервју за прикупљање, питања за ЈДБЦ интервју итд.


1 2 3 4 5

Основна Јава: Основе Јава питања за интервју


1) Шта је Јава?

Јава је на високом нивоу, објектно оријентисан , робустан, сигуран програмски језик, независан од платформе, високих перформанси, вишенитни и преносиви програмски језик. Развио га је Џејмс Гослинг јуна 1991. Такође може бити позната и као платформа јер пружа сопствени ЈРЕ и АПИ.


2) Које су разлике између Ц++ и Јаве?

Разлике између Ц++ и Јава су дати у следећој табели.

Индекс поређења Ц++Јава
Независно од платформе Ц++ зависи од платформе.Јава је независна од платформе.
Углавном се користи за Ц++ се углавном користи за системско програмирање.Јава се углавном користи за програмирање апликација. Широко се користи у прозорским, веб-базираним, пословним и мобилним апликацијама.
Циљ дизајна Ц++ је дизајниран за програмирање система и апликација. То је био продужетак Ц програмски језик .Јава је дизајнирана и креирана као тумач за системе за штампање, али је касније проширена као подршка мрежном рачунарству. Дизајниран је са циљем да буде једноставан за коришћење и доступан широј публици.
Иди на Ц++ подржава наредбу гото.Јава не подржава наредбу гото.
Вишеструко наслеђе Ц++ подржава вишеструко наслеђивање.Јава не подржава вишеструко наслеђивање кроз класу. Може се постићи тако што интерфејси у јава .
Преоптерећење оператера Ц++ подржава преоптерећење оператера .Јава не подржава преоптерећење оператора.
Поинтерс Ц++ подржава показиваче. Можете написати програм показивача у Ц++.Јава интерно подржава показивач. Међутим, не можете написати програм показивача у Јави. То значи да Јава има ограничену подршку за показиваче у Јави.
Компајлер и тумач Ц++ користи само компајлер. Ц++ се компајлира и покреће помоћу компајлера који претвара изворни код у машински код, тако да Ц++ зависи од платформе.Јава користи и компајлер и интерпретер. Јава изворни код се конвертује у бајт код у време компилације. Интерпретатор извршава овај бајт код у току рада и производи излаз. Јава се тумачи зато је независна од платформе.
Позовите по вредности и Позовите по референци Ц++ подржава и позив по вредности и позив по референци.Јава подржава само позив по вредности. У Јави не постоји позив по референци.
Структура и Унија Ц++ подржава структуре и синдикате.Јава не подржава структуре и синдикате.
Тхреад Суппорт Ц++ нема уграђену подршку за нити. Ослања се на библиотеке трећих страна за подршку нити.Јава има уграђен конац подршка.
Коментар документације Ц++ не подржава коментаре документације.Јава подржава документациони коментар (/** ... */) за креирање документације за јава изворни код.
Виртуелна кључна реч Ц++ подржава виртуелну кључну реч тако да можемо да одлучимо да ли да заменимо функцију или не.Јава нема виртуелну кључну реч. Подразумевано можемо заменити све нестатичке методе. Другим речима, нестатичке методе су подразумевано виртуелне.
непотписани десни помак >>> Ц++ не подржава оператор >>>.Јава подржава непотписани оператор померања удесно >>> који попуњава нулу на врху за негативне бројеве. За позитивне бројеве, функционише исто као оператор >>.
Дрво наслеђа Ц++ увек ствара ново стабло наслеђа.Јава увек користи једно стабло наслеђивања јер су све класе потомци класе Објецт у Јави. Објекат класа је корен наслеђе дрво у Јави.
Хардвер Ц++ је ближи хардверу.Јава није толико интерактивна са хардвером.
Објектно оријентисан Ц++ је објектно оријентисан језик. Међутим, у језику Ц, хијерархија једног корена није могућа.Јава је такође објектно оријентисан Језик. Међутим, све (осим основних типова) је објекат у Јави. То је хијерархија једног корена јер се све изводи из јава.ланг.Објецт.

3) Наведите карактеристике програмског језика Јава.

У програмском језику Јава постоје следеће карактеристике.

    једноставно:Јаву је лако научити. Синтакса Јаве је заснована на Ц++ што олакшава писање програма у њој.
    Објектно оријентисан:Јава прати објектно оријентисану парадигму која нам омогућава да одржавамо наш код као комбинацију различитих типова објеката који укључују и податке и понашање.
    Преносив:Јава подржава приступ читања једном и било где. Можемо да извршимо Јава програм на свакој машини. Јава програм (.јава) се конвертује у бајт код (.цласс) који се лако може покренути на свакој машини.
    Независно од платформе:Јава је програмски језик независан од платформе. Разликује се од других програмских језика као што су Ц и Ц++ којима је потребна платформа за извршавање. Јава долази са својом платформом на којој се извршава њен код. Јава не зависи од оперативног система који ће бити покренут.
    Осигурано:Јава је заштићена јер не користи експлицитне показиваче. Јава такође пружа концепт руковања бајт кодом и изузетком што га чини сигурнијим.
    Робустан:Јава је јак програмски језик јер користи снажно управљање меморијом. Концепти као што су аутоматско сакупљање смећа, руковање изузецима, итд. чине га робуснијим.
    Архитектура неутрално:Јава је архитектонски неутрална јер не зависи од архитектуре. У Ц-у, величина типова података може да варира у зависности од архитектуре (32-битна или 64-битна) која не постоји у Јави.
    Тумачено:Јава користи Јуст-ин-тиме (ЈИТ) интерпретер заједно са компајлером за извршавање програма.
    Високих перформанси:Јава је бржа од других традиционалних интерпретираних програмских језика јер је Јава бајт код 'близак' изворном коду. Још увек је мало спорији од компајлираног језика (нпр. Ц++).
    Вишенитно:Можемо писати Јава програме који се баве многим задацима одједном дефинисањем више нити. Главна предност мулти-тхреадинг-а је у томе што не заузима меморију за сваку нит. Дели заједничко меморијско подручје. Нити су важне за мултимедију, веб апликације итд.
    Дистрибуирано:Јава се дистрибуира зато што корисницима олакшава креирање дистрибуираних апликација у Јави. РМИ и ЕЈБ се користе за креирање дистрибуираних апликација. Ова карактеристика Јаве нам омогућава да приступамо датотекама позивањем метода са било које машине на интернету.
    динамички:Јава је динамичан језик. Подржава динамичко учитавање класа. То значи да се класе учитавају на захтев. Такође подржава функције из својих матерњих језика, тј. Ц и Ц++.

4) Шта разумете под Јава виртуелном машином?

Јава виртуелна машина је виртуелна машина која омогућава рачунару да покрене Јава програм. ЈВМ се понаша као рун-тиме енгине који позива главни метод присутан у Јава коду. ЈВМ је спецификација која се мора имплементирати у рачунарски систем. Јава код је компајлиран од стране ЈВМ-а да буде бајткод који је независан од машина и близак изворном коду.


5) Која је разлика између ЈДК, ЈРЕ и ЈВМ?

ЈВМ

ЈВМ је акроним за Јава виртуелну машину; то је апстрактна машина која обезбеђује окружење за извршавање у којем се Јава бајт код може извршити. То је спецификација која специфицира рад Јава виртуелне машине. Његову имплементацију су обезбедили Орацле и друге компаније. Његова имплементација је позната као ЈРЕ.

ЈВМ су доступни за многе хардверске и софтверске платформе (тако да ЈВМ зависи од платформе). То је рунтиме инстанца која се креира када покренемо Јава класу. Постоје три појма ЈВМ-а: спецификација, имплементација и инстанца.

ЈРЕ

ЈРЕ је скраћеница од Јава Рунтиме Енвиронмент. То је имплементација ЈВМ-а. Јава Рунтиме Енвиронмент је скуп софтверских алата који се користе за развој Јава апликација. Користи се да обезбеди окружење за извршавање. То је имплементација ЈВМ-а. Физички постоји. Садржи скуп библиотека + друге датотеке које ЈВМ користи током извршавања.

ЈДК

ЈДК је акроним за Јава Девелопмент Кит. То је окружење за развој софтвера које се користи за развој Јава апликација и аплета. Физички постоји. Садржи ЈРЕ + развојне алате. ЈДК је имплементација било које од доле наведених Јава платформи које је издала корпорација Орацле:

  • Стандардно издање Јава платформе
  • Ентерприсе Едитион Јава платформа
  • Мицро Едитион Јава платформа
Детаљније.

6) Колико типова меморијских области додељује ЈВМ?

Многи типови:

    Класа(метод) Област:Цласс Ареа складишти структуре по класама као што су рунтиме константни скуп, поље, подаци методе и код за методе.Гомила:То је област података времена извршавања у којој се меморија додељује објектимаГомила:Јава Стацк чува оквире. Садржи локалне варијабле и делимичне резултате, и игра улогу у позивању и враћању метода. Свака нит има приватни ЈВМ стек, креиран у исто време када и нит. Нови оквир се креира сваки пут када се метода позове. Оквир се уништава када се заврши позивање његове методе.Регистар бројача програма:ПЦ (програмски бројач) регистар садржи адресу инструкције Јава виртуелне машине која се тренутно извршава.Нативе Метход Стацк:Садржи све изворне методе које се користе у апликацији.
Детаљније.

7) Шта је ЈИТ компајлер?

Јуст-Ин-Тиме (ЈИТ) компајлер: Користи се за побољшање перформанси. ЈИТ компајлира делове бајткода који имају сличну функционалност у исто време, и самим тим смањује количину времена потребног за компилацију. Овде се термин компајлер односи на преводиоца из скупа инструкција Јава виртуелне машине (ЈВМ) у скуп инструкција одређеног ЦПУ-а.


8) Шта је платформа?

Платформа је хардверско или софтверско окружење у којем се извршава део софтвера. Постоје две врсте платформи, софтверске и хардверске. Јава пружа платформу засновану на софтверу.


9) Које су главне разлике између Јава платформе и других платформи?

Постоје следеће разлике између Јава платформе и других платформи.

  • Јава је платформа заснована на софтверу, док друге платформе могу бити хардверске платформе или платформе засноване на софтверу.
  • Јава се извршава на врху других хардверских платформи, док друге платформе могу имати само хардверске компоненте.

10) Шта даје Јави њену природу „напиши једном и покрени било где“?

Бајткод. Јава компајлер конвертује Јава програме у фајл класе (бајт код) који је посредни језик између изворног и машинског кода. Овај бајт код није специфичан за платформу и може се извршити на било ком рачунару.


11) Шта је цласслоадер?

Цласслоадер је подсистем ЈВМ-а који се користи за учитавање датотека класа. Кад год покренемо јава програм, прво га учитава учитавач класа. У Јави постоје три уграђена учитавача класа.

    Боотстрап ЦлассЛоадер: Ово је први цласслоадер који је суперкласа Ектенсион цласслоадер-а. Учитава рт.јар фајл који садржи све датотеке класа Јава Стандард Едитион као што су класе пакета јава.ланг, класе пакета јава.нет, класе пакета јава.утил, класе пакета јава.ио, класе пакета јава.скл итд.Ектенсион ЦлассЛоадер: Ово је подређени учитавач класа за Боотстрап и родитељски учитавач класа за Систем цласслоадер. Учитава јар датотеке које се налазе унутра $ЈАВА_ХОМЕ/јре/либ/ект именик.Систем/апликација ЦлассЛоадер: Ово је подређени учитавач класа Ектенсион цласслоадер-а. Учитава датотеке класе са путање класе. Подразумевано, путања класе је подешена на тренутни директоријум. Можете да промените путању до класе користећи прекидач '-цп' или '-цласспатх'. Такође је познат као Апплицатион цласслоадер.

12) Да ли је име Емпти .јава датотеке важеће име изворне датотеке?

Да, Јава омогућава да сачувамо нашу јава датотеку .јава само, треба да га компајлирамо јавац .јава и протрчати јава цласснаме Узмимо једноставан пример:

 //save by .java only class A{ public static void main(String args[]){ System.out.println('Hello java'); } } //compile by javac .java //run by java A 

саставити га по јавац .јава

води га јава А


13) Да ли је делете, нект, маин, екит или нулл кључна реч у Јави?

Не.


14) Ако не дам никакве аргументе у командној линији, која ће онда вредност сачувана у низу стрингова пренета у маин() метод, празна или НУЛЛ?

Празан је, али није нул.


15) Шта ако напишем статиц публиц воид уместо публиц статиц воид?

Програм се компајлира и ради исправно јер редослед спецификација није битан у Јави.


16) Која је подразумевана вредност локалних променљивих?

Локалне променљиве нису иницијализоване ни на једну подразумевану вредност, нити на примитивне нити на референце објеката.


17) Који су различити спецификатори приступа у Јави?

У Јави, спецификације приступа су кључне речи које се користе за дефинисање опсега приступа методе, класе или променљиве. У Јави постоје четири спецификација приступа дата у наставку.

    ЈавноКласама, методама или варијаблама које су дефинисане као јавне, може се приступити било којом класом или методом.ЗаштићеноЗаштићеном може приступити класа истог пакета, или подкласа ове класе, или унутар исте класе.УобичајеноПодразумевани су доступни само у оквиру пакета. Подразумевано, све класе, методе и варијабле су подразумеваног опсега.ПриватниПриватној класи, методама или променљивим дефинисаним као приватне може се приступити само унутар класе.

18) Која је сврха статичких метода и варијабли?

Методе или променљиве дефинисане као статички се деле међу свим објектима класе. Статичност је део класе а не објекта. Статичке променљиве се чувају у области класе и не морамо да креирамо објекат да бисмо приступили таквим променљивим. Стога се статички користи у случају када треба да дефинишемо променљиве или методе које су заједничке за све објекте класе.

На пример, у разреду који симулира колекцију студената на колеџу, назив колеџа је заједнички атрибут за све студенте. Стога ће назив факултета бити дефинисан као статичне .


19) Које су предности пакета у Јави?

Постоје различите предности дефинисања пакета у Јави.

  • Пакети избегавају сукобе имена.
  • Пакет омогућава лакшу контролу приступа.
  • Такође можемо имати скривене класе које нису видљиве споља и које пакет користи.
  • Лакше је лоцирати сродне класе.

20) Шта је резултат следећег Јава програма?

 class Test { public static void main (String args[]) { System.out.println(10 + 20 + 'Javatpoint'); System.out.println('Javatpoint' + 10 + 20); } } 

Излаз горњег кода ће бити

 30Javatpoint Javatpoint1020 

Објашњење

У првом случају, 10 и 20 се третирају као бројеви и сабирају се као 30. Сада се њихов збир 30 третира као низ и спаја са низом Јаватпоинт . Дакле, излаз ће бити 30Јаватпоинт .

У другом случају, стринг Јаватпоинт је повезан са 10 да би био стринг Јаватпоинт10 који ће тада бити спојен са 20 да се Јаватпоинт1020 .


21) Шта је резултат следећег Јава програма?

 class Test { public static void main (String args[]) { System.out.println(10 * 20 + 'Javatpoint'); System.out.println('Javatpoint' + 10 * 20); } } 

Излаз горњег кода ће бити

 200Javatpoint Javatpoint200 

Објашњење

У првом случају, бројеви 10 и 20 ће се прво помножити, а затим ће се резултат 200 третирати као низ и спојити са низом Јаватпоинт да произведе излаз 200Јаватпоинт .

У другом случају, бројеви 10 и 20 ће се прво помножити да би били 200 јер је приоритет множења већи од сабирања. Резултат 200 ће бити третиран као стринг и спојен са стрингом Јаватпоинт да произведе излаз као Јаватпоинт200 .


22) Шта је резултат следећег Јава програма?

 class Test { public static void main (String args[]) { for(int i=0; 0; i++) { System.out.println('Hello Javatpoint'); } } } 

Горњи код ће дати грешку у времену компајлирања јер фор петља захтева логичку вредност у другом делу, а ми дајемо целобројну вредност, тј. 0.


Основна Јава – ООП концепти: почетна питања за интервју за ООП

Дато је више од 50 ООПс (Објектно-оријентисано програмирање и систем) питања за интервју. Међутим, они су категорисани у многе одељке као што су питања за конструкторски интервју, статичка питања за интервју, питања интервјуа за наслеђивање, питање интервјуа за апстракцију, питања за интервју о полиморфизму, итд. ради бољег разумевања.


23) Шта је објектно оријентисана парадигма?

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

  • Прати приступ одоздо према горе у дизајну програма.
  • Фокусирајте се на податке са методама за рад са подацима објекта
  • Укључује концепт као што је Енкапсулација и апстракција који скрива сложеност од корисника и приказује само функционалност.
  • Имплементира приступ у реалном времену као што је наслеђивање, апстракција итд.
  • Примери објектно оријентисане парадигме су Ц++, Симула, Смаллталк, Питхон, Ц# итд.

24) Шта је објекат?

Објекат је ентитет у реалном времену који има неко стање и понашање. У Јави, Објецт је инстанца класе која има променљиве инстанце као стање објекта и методе као понашање објекта. Објекат класе се може креирати коришћењем Нова кључна реч.


25) Која је разлика између објектно оријентисаног програмског језика и објектно заснованог програмског језика?

Постоје следеће основне разлике између објектно оријентисаног језика и језика заснованог на објектима.

  • Објектно оријентисани језици прате све концепте ООП-а, док објектни језик не прати све концепте ООП-а као што су наслеђивање и полиморфизам.
  • Објектно оријентисани језици немају уграђене објекте, док објектно засновани језици имају уграђене објекте, на пример, ЈаваСцрипт има објекат прозора.
  • Примери објектно оријентисаног програмирања су Јава, Ц#, Смаллталк, итд., док су примери објеката заснованих језика ЈаваСцрипт, ВБСцрипт итд.

26) Која ће бити почетна вредност референце објекта која је дефинисана као променљива инстанце?

Све референце објеката су иницијализоване на нулл у Јави.


Основна Јава – ООП концепти: Питања за интервју са конструктором


27) Шта је конструктор?

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

Детаљније.

28) Колико типова конструктора се користи у Јави?

На основу параметара предатих у конструкторима, у Јави постоје два типа конструктора.

    Подразумевани конструктор:подразумевани конструктор је онај који не прихвата никакву вредност. Подразумевани конструктор се углавном користи за иницијализацију променљиве инстанце са подразумеваним вредностима. Такође се може користити за обављање неког корисног задатка при креирању објеката. Подразумевани конструктор се имплицитно позива од стране компајлера ако нема дефинисаног конструктора у класи.Параметризовани конструктор:Параметаризовани конструктор је онај који може иницијализовати променљиве инстанце са датим вредностима. Другим речима, можемо рећи да се конструктори који могу прихватити аргументе називају параметризовани конструктори.
Јава Цонструцторс

29) Која је сврха подразумеваног конструктора?

Сврха подразумеваног конструктора је да додели подразумевану вредност објектима. Јава компајлер креира подразумевани конструктор имплицитно ако не постоји конструктор у класи.

 class Student3{ int id; String name; void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student3 s1=new Student3(); Student3 s2=new Student3(); s1.display(); s2.display(); } } 
Тестирајте одмах

Излаз:

 0 null 0 null 

Објашњење: У горњој класи не креирате никакав конструктор, тако да вам компајлер обезбеђује подразумевани конструктор. Овде су 0 и нулл вредности обезбеђене подразумеваним конструктором.

Јава подразумевани конструктор
Детаљније.

30) Да ли конструктор враћа неку вредност?

године: да, конструктор имплицитно враћа тренутну инстанцу класе (не можете користити експлицитни тип повратка са конструктором). Детаљније.


31) Да ли је конструктор наслеђен?

Не, конструктор није наслеђен.


32) Можете ли направити конструктор коначан?

Не, конструктор не може бити коначан.

кашичица против супене кашике

33) Можемо ли преоптеретити конструкторе?

Да, конструктори могу бити преоптерећени променом броја аргумената које конструктор прихвата или променом типа података параметара. Размотрите следећи пример.

 class Test { int i; public Test(int k) { i=k; } public Test(int k, int m) { System.out.println('Hi I am assigning the value max(k, m) to i'); if(k>m) { i=k; } else { i=m; } } } public class Main { public static void main (String args[]) { Test test1 = new Test(10); Test test2 = new Test(12, 15); System.out.println(test1.i); System.out.println(test2.i); } } 

У горњем програму, Тест конструктора је преоптерећен другим конструктором. У првом позиву конструктору, позива се конструктор са једним аргументом, а ја ће бити иницијализован са вредношћу 10. Међутим, у другом позиву конструктору, позива се конструктор са 2 аргумента, а ја ће бити иницијализован са вредношћу 15.


34) Шта разумете под конструктором копирања у Јави?

У Јави не постоји конструктор копирања. Међутим, можемо копирати вредности из једног објекта у други као конструктор копирања у Ц++.

Постоји много начина за копирање вредности једног објекта у други у Јави. Су:

  • По конструктору
  • Додељивањем вредности једног објекта другом
  • Методом цлоне() класе Објецт

У овом примеру ћемо копирати вредности једног објекта у други користећи јава конструктор.

 //Java program to initialize the values from one object to another class Student6{ int id; String name; //constructor to initialize integer and string Student6(int i,String n){ id = i; name = n; } //constructor to initialize another object Student6(Student6 s){ id = s.id; name =s.name; } void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student6 s1 = new Student6(111,'Karan'); Student6 s2 = new Student6(s1); s1.display(); s2.display(); } } 
Тестирајте одмах

Излаз:

 111 Karan 111 Karan 

35) Које су разлике између конструктора и метода?

Постоје многе разлике између конструктора и метода. Они су дати у наставку.

Јава ЦонструцторЈава Метход
Конструктор се користи за иницијализацију стања објекта.Метода се користи за откривање понашања објекта.
Конструктор не сме да има тип враћања.Метода мора имати тип враћања.
Конструктор се позива имплицитно.Метод се експлицитно позива.
Јава компајлер обезбеђује подразумевани конструктор ако немате ниједан конструктор у класи.Метод ни у ком случају не обезбеђује компајлер.
Име конструктора мора бити исто као и име класе.Име методе може или не мора бити исто као име класе.

Јава конструктори против метода

36) Шта је резултат следећег Јава програма?

 public class Test { Test(int a, int b) { System.out.println('a = '+a+' b = '+b); } Test(int a, float b) { System.out.println('a = '+a+' b = '+b); } public static void main (String args[]) { byte a = 10; byte b = 15; Test test = new Test(a,b); } } 

Излаз следећег програма је:

 a = 10 b = 15 

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


37) Шта је резултат следећег Јава програма?

 class Test { int i; } public class Main { public static void main (String args[]) { Test test = new Test(); System.out.println(test.i); } } 

Излаз програма је 0 јер је променљива и интерно иницијализована на 0. Како знамо да се подразумевани конструктор позива имплицитно ако у класи нема конструктора, променљива и се иницијализује на 0 пошто у класи нема конструктора.


38) Шта је резултат следећег Јава програма?

 class Test { int test_a, test_b; Test(int a, int b) { test_a = a; test_b = b; } public static void main (String args[]) { Test test = new Test(); System.out.println(test.test_a+' '+test.test_b); } } 

Има грешка компајлера у програму јер постоји позив подразумеваног конструктора у главном методу који није присутан у класи. Међутим, у класи Тест постоји само један параметризовани конструктор. Према томе, ниједан подразумевани конструктор није позван од стране конструктора имплицитно.


Основна Јава – ООП концепти: статичка кључна реч Питања за интервју


39) Шта је статичка променљива?

Статичка променљива се користи за упућивање на заједничку особину свих објеката (која није јединствена за сваки објекат), на пример, назив компаније запослених, назив факултета, итд. Статичка променљива добија меморију само једном у области класе у време учитавања часа. Коришћење статичке променљиве чини ваш програм ефикаснијим у меморији (штеди меморију). Статичка променљива припада класи, а не објекту.

 //Program of static variable class Student8{ int rollno; String name; static String college ='ITS'; Student8(int r,String n){ rollno = r; name = n; } void display (){System.out.println(rollno+' '+name+' '+college);} public static void main(String args[]){ Student8 s1 = new Student8(111,'Karan'); Student8 s2 = new Student8(222,'Aryan'); s1.display(); s2.display(); } } 
Тестирајте одмах
 Output:111 Karan ITS 222 Aryan ITS 

Детаљније.

40) Шта је статичка метода?

  • Статички метод припада класи, а не објекту.
  • Нема потребе да се креира објекат за позивање статичких метода.
  • Статички метод може приступити и променити вредност статичке променљиве.
Детаљније.

41) Која су ограничења која се примењују на Јава статичке методе?

Два главна ограничења се примењују на статичке методе.

  • Статички метод не може да користи нестатичке чланове података или директно позива нестатичку методу.
  • ово и супер се не могу користити у статичком контексту јер нису статични.

42) Зашто је главни метод статичан?

Зато што објекат није обавезан да позове статички метод. Ако главни метод учинимо нестатичним, ЈВМ ће прво морати да креира свој објекат, а затим да позове маин() метод што ће довести до додатне алокације меморије. Детаљније.


43) Можемо ли заобићи статичке методе?

Не, не можемо заобићи статичке методе.

44) Шта је статички блок?

Статички блок се користи за иницијализацију члана статичког податка. Извршава се пре главног метода, у време учитавања класе.

 class A2{ static{System.out.println('static block is invoked');} public static void main(String args[]){ System.out.println('Hello main'); } } 
Тестирајте одмах
 Output: static block is invoked Hello main 

Детаљније.

45) Можемо ли извршити програм без маин() методе?

Одговор) Не, било је могуће пре ЈДК 1.7 коришћењем статичког блока. Од ЈДК 1.7, то није могуће. Детаљније.


46) Шта ако се статички модификатор уклони из потписа главног метода?

Програм се компајлира. Међутим, током извршавања, испоставља грешку „НоСуцхМетходЕррор“.


47) Која је разлика између статичке (класе) методе и методе инстанце?

статички или класни методметод инстанце
1) Метода која је декларисана као статична је позната као статичка метода.Метода која није декларисана као статична је позната као метода инстанце.
2) Не морамо да креирамо објекте да бисмо позвали статичке методе.Објекат је потребан за позивање метода инстанце.
3) Нестатичким (инстанцама) члановима се не може приступити директно у статичком контексту (статичка метода, статички блок и статичка угнежђена класа).Статичким и нестатичким променљивим се може приступити у методама инстанце.
4)На пример: јавна статичка инт коцка(инт н){ ретурн н*н*н;}На пример: публиц воид мсг(){...}.

48) Можемо ли конструкторе учинити статичним?

Као што знамо да статички контекст (метод, блок или променљива) припада класи, а не објекту. Пошто се конструктори позивају само када се објекат креира, нема смисла правити конструкторе статичним. Међутим, ако то покушате да урадите, компајлер ће показати грешку компајлера.


49) Можемо ли апстрактне методе учинити статичким у Јави?

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


50) Можемо ли да прогласимо статичке променљиве и методе у апстрактној класи?

Да, можемо декларисати статичке променљиве и методе у апстрактној методи. Пошто знамо да не постоји захтев да се објекат учини да приступи статичком контексту, стога можемо приступити статичком контексту декларисаном унутар апстрактне класе коришћењем имена апстрактне класе. Размотрите следећи пример.

 abstract class Test { static int i = 102; static void TestMethod() { System.out.println('hi !! I am good !!'); } } public class TestClass extends Test { public static void main (String args[]) { Test.TestMethod(); System.out.println('i = '+Test.i); } } 

Излаз

 hi !! I am good !! i = 102 

Основна Јава – ООП концепти: Питања интервјуа о наслеђивању


51) Шта је ово кључна реч у Јави?

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

јава ову кључну реч
Детаљније.

52) Које су главне употребе ове кључне речи?

Постоје следеће употребе ово кључна реч.

    овоможе се користити за упућивање на тренутну променљиву инстанце класе.овоможе се користити за позивање методе тренутне класе (имплицитно)ово()може се користити за позивање тренутног конструктора класе.овоможе се пренети као аргумент у позиву методе.овоможе се пренети као аргумент у позиву конструктора.овоможе се користити за враћање тренутне инстанце класе из методе.

53) Можемо ли додијелити референцу на ово променљива?

Не, ово се не може доделити ниједној вредности јер увек указује на тренутни објекат класе и ово је последња референца у Јави. Међутим, ако покушамо да то урадимо, приказаће се грешка компајлера. Размотрите следећи пример.

 public class Test { public Test() { this = null; System.out.println('Test class constructor called'); } public static void main (String args[]) { Test t = new Test(); } } 

Излаз

 Test.java:5: error: cannot assign a value to final variable this this = null; ^ 1 error 

54) Може ово да ли се кључна реч користи за упућивање на статичке чланове?

Да, могуће је користити ову кључну реч за упућивање на статичке чланове јер је ово само референтна варијабла која се односи на тренутни објекат класе. Међутим, као што знамо, није потребно приступати статичким варијаблама преко објеката, стога није најбоља пракса да се ово користи за упућивање на статичке чланове. Размотрите следећи пример.

 public class Test { static int i = 10; public Test () { System.out.println(this.i); } public static void main (String args[]) { Test t = new Test(); } } 

Излаз

 10 

55) Како се може извршити уланчавање конструктора помоћу ове кључне речи?

Уланчавање конструктора нам омогућава да позовемо један конструктор из другог конструктора класе у односу на тренутни објекат класе. Можемо да користимо ову кључну реч да извршимо уланчавање конструктора унутар исте класе. Размотрите следећи пример који илуструје како можемо да користимо ову кључну реч да постигнемо уланчавање конструктора.

 public class Employee { int id,age; String name, address; public Employee (int age) { this.age = age; } public Employee(int id, int age) { this(age); this.id = id; } public Employee(int id, int age, String name, String address) { this(id, age); this.name = name; this.address = address; } public static void main (String args[]) { Employee emp = new Employee(105, 22, 'Vikas', 'Delhi'); System.out.println('ID: '+emp.id+' Name:'+emp.name+' age:'+emp.age+' address: '+emp.address); } } 

Излаз

 ID: 105 Name:Vikas age:22 address: Delhi 

56) Које су предности прослеђивања овога у метод уместо самог објекта тренутне класе?

Као што знамо, ово се односи на тренутни објекат класе, стога мора бити сличан објекту тренутне класе. Међутим, могу постојати две главне предности прослеђивања овога у метод уместо у објекат тренутне класе.

  • ово је коначна варијабла. Према томе, ово се не може доделити ниједној новој вредности, док тренутни објекат класе можда није коначан и може се променити.
  • ово се може користити у синхронизованом блоку.

57) Шта је наследство?

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

У Јави постоји пет типова наслеђивања.

  • Наслеђивање на једном нивоу
  • Наслеђивање на више нивоа
  • Вишеструко наслеђе
  • Хијерархијско наслеђе
  • Хибридно наслеђе

Вишеструко наслеђивање није подржано у Јави кроз класу.

Детаљније.

58) Зашто се наслеђивање користи у Јави?

Постоје различите предности коришћења наслеђивања у Јави које су дате у наставку.

  • Наслеђивање обезбеђује поновну употребу кода. Изведена класа не мора редефинисати методу основне класе осим ако не треба да обезбеди специфичну имплементацију методе.
  • Полиморфизам времена извршавања се не може постићи без коришћења наслеђивања.
  • Можемо симулирати наслеђивање класа са објектима у реалном времену што ООП-ове чини реалнијим.
  • Наслеђивање обезбеђује скривање података. Основна класа може сакрити неке податке из изведене класе тако што ће их учинити приватним.
  • Надјачавање метода се не може постићи без наслеђивања. Прекорачењем методе можемо дати специфичну имплементацију неке основне методе коју садржи основна класа.

59) Која класа је надкласа за све класе?

Објекат класа је надкласа свих других класа у Јави.


60) Зашто вишеструко наслеђивање није подржано у Јави?

Да би се смањила сложеност и поједноставио језик, вишеструко наслеђивање није подржано у Јави. Размотрите сценарио где су А, Б и Ц три класе. Ц класа наслеђује А и Б класе. Ако А и Б класе имају исти метод и ви га позивате из објекта подређене класе, биће нејасноћа у позивању методе А или Б класе.

Пошто су грешке у времену превођења боље од грешака током извођења, Јава приказује грешку у времену превођења ако наследите 2 класе. Дакле, без обзира да ли имате исти или другачији метод, доћи ће до грешке у времену компајлирања.

 class A{ void msg(){System.out.println('Hello');} } class B{ void msg(){System.out.println('Welcome');} } class C extends A,B{//suppose if it were Public Static void main(String args[]){ C obj=new C(); obj.msg();//Now which msg() method would be invoked? } } 
Тестирајте одмах
 Compile Time Error 

61) Шта је агрегација?

Агрегација се може дефинисати као однос између две класе где агрегатна класа садржи референцу на класу коју поседује. Агрегацију је најбоље описати као а има однос. На пример, збирна класа Емплоиее која има различита поља као што су старост, име и плата такође садржи објекат класе Аддресс која има различита поља као што су Аддресс-Лине 1, Цити, Стате и пин-цоде. Другим речима, можемо рећи да Емплоиее (класа) има објекат класе Аддресс. Размотрите следећи пример.

Адреса.јава

 public class Address { String city,state,country; public Address(String city, String state, String country) { this.city = city; this.state = state; this.country = country; } } 

Емплоиее.јава

 public class Emp { int id; String name; Address address; public Emp(int id, String name,Address address) { this.id = id; this.name = name; this.address=address; } void display(){ System.out.println(id+' '+name); System.out.println(address.city+' '+address.state+' '+address.country); } public static void main(String[] args) { Address address1=new Address('gzb','UP','india'); Address address2=new Address('gno','UP','india'); Emp e=new Emp(111,'varun',address1); Emp e2=new Emp(112,'arun',address2); e.display(); e2.display(); } } 

Излаз

 111 varun gzb UP india 112 arun gno UP india 

62) Шта је композиција?

Држање референце класе унутар неке друге класе познато је као композиција. Када објекат садржи други објекат, ако садржани објекат не може постојати без постојања објекта контејнера, онда се назива композиција. Другим речима, можемо рећи да је композиција посебан случај агрегације која представља јачи однос између два објекта. Пример: Одељење садржи ученике. Ученик не може постојати без разреда. Постоји композиција између разреда и ученика.


63) Која је разлика између агрегације и састава?

Агрегација представља слабу везу, док композиција представља јаку везу. На пример, бицикл има индикатор (агрегацију), али бицикл има мотор (састав).


64) Зашто Јава не подржава показиваче?

Показивач је променљива која се односи на меморијску адресу. Они се не користе у Јави јер су несигурни (небезбедни) и сложени за разумевање.


65) Шта је супер у Јави?

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

 class Animal{ Animal(){System.out.println('animal is created');} } class Dog extends Animal{ Dog(){ System.out.println('dog is created'); } } class TestSuper4{ public static void main(String args[]){ Dog d=new Dog(); } } 
Тестирајте одмах

Излаз:

 animal is created dog is created 
Детаљније.

66) Како се уланчавање конструктора може извршити коришћењем кључне речи супер?

 class Person { String name,address; int age; public Person(int age, String name, String address) { this.age = age; this.name = name; this.address = address; } } class Employee extends Person { float salary; public Employee(int age, String name, String address, float salary) { super(age,name,address); this.salary = salary; } } public class Test { public static void main (String args[]) { Employee e = new Employee(22, 'Mukesh', 'Delhi', 90000); System.out.println('Name: '+e.name+' Salary: '+e.salary+' Age: '+e.age+' Address: '+e.address); } } 

Излаз

 Name: Mukesh Salary: 90000.0 Age: 22 Address: Delhi 

67) Које су главне употребе кључне речи супер?

Постоје следеће употребе кључне речи супер.

  • супер се може користити за упућивање на променљиву инстанце непосредне родитељске класе.
  • супер се може користити за позивање методе непосредне родитељске класе.
  • супер() се може користити за позивање непосредног конструктора родитељске класе.

68) Које су разлике између ове и супер кључне речи?

Постоје следеће разлике између ове и супер кључне речи.

  • Кључна реч супер увек указује на контекст родитељске класе, док ова кључна реч увек указује на контекст тренутне класе.
  • Кључна реч супер се првенствено користи за иницијализацију променљивих основне класе у оквиру конструктора изведене класе, док се ова кључна реч првенствено користи за разликовање локалних променљивих и променљивих инстанце када се проследи у конструктору класе.
  • Супер и ово мора бити прва изјава унутар конструктора у супротном ће компајлер избацити грешку.

69) Шта је резултат следећег Јава програма?

 class Person { public Person() { System.out.println('Person class constructor called'); } } public class Employee extends Person { public Employee() { System.out.println('Employee class constructor called'); } public static void main (String args[]) { Employee e = new Employee(); } } 

Излаз

 Person class constructor called Employee class constructor called 

Објашњење

Компајлер имплицитно позива супер() ако ниједан супер() или тхис() није експлицитно укључен у изведени конструктор класе. Стога се у овом случају прво позива конструктор класе Персон, а затим се позива конструктор класе Емплоиее.


70) Можете ли да користите тхис() и супер() оба у конструктору?

Не, јер тхис() и супер() морају бити прва изјава у конструктору класе.

Пример:

 public class Test{ Test() { super(); this(); System.out.println('Test class object is created'); } public static void main(String []args){ Test t = new Test(); } } 

Излаз:

 Test.java:5: error: call to this must be first statement in constructor 

71) Шта је клонирање објекта?

Клонирање објекта се користи за креирање тачне копије објекта. Метода цлоне() класе Објецт се користи за клонирање објекта. Тхе јава.ланг.Цлонеабле интерфејс мора да имплементира класа чији клон објекта желимо да креирамо. Ако не имплементирамо Цлонеабле интерфејс, цлоне() метода генерише ЦлонеНотСуппортедЕкцептион.

 protected Object clone() throws CloneNotSupportedException 
Детаљније.

Основна Јава – ООП концепти: Питања за интервју са преоптерећењем метода


72) Шта је преоптерећење метода?

Преоптерећење метода је техника полиморфизма која нам омогућава да креирамо више метода са истим именом, али различитим потписом. Преоптерећење метода можемо постићи на два начина.

  • Променом броја аргумената
  • Променом типа података аргумената

Преоптерећење метода повећава читљивост програма. Преоптерећење метода се врши да би се брзо схватио програм.

Детаљније.

73) Зашто преоптерећење метода није могуће променом типа враћања у Јави?

У Јави, преоптерећење метода није могуће променом типа враћања програма због избегавања двосмислености.

 class Adder{ static int add(int a,int b){return a+b;} static double add(int a,int b){return a+b;} } class TestOverloading3{ public static void main(String[] args){ System.out.println(Adder.add(11,11));//ambiguity }} 
Тестирајте одмах

Излаз:

 Compile Time Error: method add(int, int) is already defined in class Adder 
Детаљније.

74) Можемо ли преоптеретити методе тако што ћемо их учинити статичним?

Не, не можемо преоптеретити методе само применом кључне речи статиц на њих (број параметара и типова је исти). Размотрите следећи пример.

 public class Animal { void consume(int a) { System.out.println(a+' consumed!!'); } static void consume(int a) { System.out.println('consumed static '+a); } public static void main (String args[]) { Animal a = new Animal(); a.consume(10); Animal.consume(20); } } 

Излаз

 Animal.java:7: error: method consume(int) is already defined in class Animal static void consume(int a) ^ Animal.java:15: error: non-static method consume(int) cannot be referenced from a static context Animal.consume(20); ^ 2 errors 

75) Можемо ли преоптеретити маин() метод?

Да, можемо имати било који број главних метода у Јава програму коришћењем преоптерећења метода.

Детаљније.

76) Шта је преоптерећење метода промоцијом типа?

Под промоцијом типа је преоптерећење метода, мислимо да се један тип података може имплицитно унапредити у други ако се не пронађе тачно подударање.

Преоптерећење Јава методе са промоцијом типа

Као што је приказано у горњем дијаграму, бајт се може унапредити у кратки, инт, дуги, плутајући или дупли. Кратки тип података може се унапредити у инт, лонг, флоат или доубле. Тип података цхар се може унапредити у инт, лонг, флоат или доубле и тако даље. Размотрите следећи пример.

 class OverloadingCalculation1{ void sum(int a,long b){System.out.println(a+b);} void sum(int a,int b,int c){System.out.println(a+b+c);} public static void main(String args[]){ OverloadingCalculation1 obj=new OverloadingCalculation1(); obj.sum(20,20);//now second int literal will be promoted to long obj.sum(20,20,20); } } 
Тестирајте одмах

Излаз

 40 60 

77) Шта је резултат следећег Јава програма?

 class OverloadingCalculation3{ void sum(int a,long b){System.out.println('a method invoked');} void sum(long a,int b){System.out.println('b method invoked');} public static void main(String args[]){ OverloadingCalculation3 obj=new OverloadingCalculation3(); obj.sum(20,20);//now ambiguity } } 

Излаз

 OverloadingCalculation3.java:7: error: reference to sum is ambiguous obj.sum(20,20);//now ambiguity ^ both method sum(int,long) in OverloadingCalculation3 and method sum(long,int) in OverloadingCalculation3 match 1 error 

Објашњење

Постоје две методе дефинисане са истим именом, тј. сум. Први метод прихвата цео број и дуг тип, док други метод прихвата дуг и целобројни тип. Проследити параметар који је а = 20, б = 20. Не можемо рећи који ће метод бити позван јер не постоји јасна разлика између целобројног литерала и дугог литерала. Ово је случај двосмислености. Због тога ће компајлер приказати грешку.


Основна Јава – ООПс концепти: Питања за интервју који превазилазе метод


78) Шта је надјачавање методе:

Ако поткласа обезбеђује специфичну имплементацију методе коју је већ обезбедила њена надређена класа, то је познато као пренаглашавање метода. Користи се за полиморфизам времена извршавања и за имплементацију метода интерфејса.

Правила за поништавање метода

  • Метода мора имати исто име као у надређеној класи.
  • Метода мора имати исти потпис као у родитељској класи.
  • Две класе морају имати ИС-А однос између себе.
Детаљније.


79) Можемо ли заобићи статичку методу?

Не, не можете заменити статичку методу јер је она део класе, а не објекат.


80) Зашто не можемо заобићи статичку методу?

То је зато што је статички метод део класе и повезан је са класом, док је метод инстанце повезан са објектом, а статички добија меморију у области класе, а инстанца добија меморију у хрпи.


81) Да ли можемо да заменимо преоптерећени метод?

Да.


82) Разлика између метода Оверлоадинг и Оверридинг.

Преоптерећење методаМетход Оверридинг
1) Преоптерећење метода повећава читљивост програма.Надјачавање методе обезбеђује специфичну имплементацију методе коју већ обезбеђује њена суперкласа.
2) Преоптерећење метода се дешава унутар класе.Надјачавање метода се дешава у две класе које имају ИС-А однос између себе.
3) У овом случају, параметри морају бити различити.У овом случају, параметри морају бити исти.

83) Можемо ли надјачати приватне методе?

Не, не можемо поништити приватне методе јер је опсег приватних метода ограничен на класу и не можемо им приступити изван класе.


84) Можемо ли да променимо опсег надређеног метода у поткласи?

Да, можемо да променимо опсег надјаченог метода у поткласи. Међутим, морамо приметити да не можемо смањити доступност методе. Приликом промене приступачности методе мора се водити рачуна о следећој тачки.

  • Приватно се може променити у заштићено, јавно или подразумевано.
  • Заштићено се може променити у јавно или подразумевано.
  • Подразумевано се може променити у јавно.
  • Јавност ће увек остати јавна.

85) Можемо ли да изменимо клаузулу тхровс методе суперкласе док је замењујемо у поткласи?

Да, можемо да изменимо клаузулу бацања методе суперкласе док је замењујемо у подкласи. Међутим, постоје нека правила која се морају поштовати приликом прејашњења у случају руковања изузетком.

  • Ако метод суперкласе не декларише изузетак, метод замењене подкласе не може да декларише проверени изузетак, али може да прогласи изузетак који није проверен.
  • Ако метод суперкласе декларише изузетак, метод надкласе може декларисати исти изузетак, изузетак поткласе или никакав изузетак, али не може декларисати родитељски изузетак.

86) Шта је резултат следећег Јава програма?

 class Base { void method(int a) { System.out.println('Base class method called with integer a = '+a); } void method(double d) { System.out.println('Base class method called with double d ='+d); } } class Derived extends Base { @Override void method(double d) { System.out.println('Derived class method called with double d ='+d); } } public class Main { public static void main(String[] args) { new Derived().method(10); } } 

Излаз

 Base class method called with integer a = 10 

Објашњење

Метод() је преоптерећен у класи Басе док је изведен у класи Деривед са типом доубле као параметром. У позиву методе, цео број се прослеђује.

87) Можете ли да имате виртуелне функције у Јави?

Да, све функције у Јави су подразумевано виртуелне.


88) Шта је коваријантни тип враћања?

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

 class A{ A get(){return this;} } class B1 extends A{ B1 get(){return this;} void message(){System.out.println('welcome to covariant return type');} public static void main(String args[]){ new B1().get().message(); } } 
Тестирајте одмах
 Output: welcome to covariant return type 
Детаљније.

89) Шта је резултат следећег Јава програма?

 class Base { public void baseMethod() { System.out.println('BaseMethod called ...'); } } class Derived extends Base { public void baseMethod() { System.out.println('Derived method called ...'); } } public class Test { public static void main (String args[]) { Base b = new Derived(); b.baseMethod(); } } 

Излаз

 Derived method called ... 

Објашњење

Метод основне класе, тј. басеМетход() је замењен у Деривед класи. У класи Тест, референтна променљива б (типа Основна класа) се односи на инстанцу изведене класе. Овде се полиморфизам времена извршавања постиже између класе Басе и Деривед. У време компајлирања, присуство методе басеМетход проверава се у основној класи, ако постоји, онда ће програм компајлиран у супротном бити приказана грешка компајлера. У овом случају, басеМетход је присутан у Басе класи; стога је успешно састављен. Међутим, током времена извршавања проверава да ли је басеМетход надјачала изведена класа, ако јесте, онда се позива метод Деривед цласс, иначе се позива метод основне класе. У овом случају, класа Деривед замењује басеМетход; стога се позива метод Деривед цласс.


Основна Јава – ООП концепти: финална кључна реч Питања за интервју


90) Која је коначна варијабла?

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

финална кључна реч у Јави
 class Bike9{ final int speedlimit=90;//final variable void run(){ speedlimit=400; } public static void main(String args[]){ Bike9 obj=new Bike9(); obj.run(); } }//end of class 
Тестирајте одмах
 Output:Compile Time Error 
Детаљније.

91) Шта је коначни метод?

Ако променимо било који метод у коначни метод, не можемо га заменити. Детаљније.

 class Bike{ final void run(){System.out.println('running');} } class Honda extends Bike{ void run(){System.out.println('running safely with 100kmph');} public static void main(String args[]){ Honda honda= new Honda(); honda.run(); } } 
Тестирајте одмах
 Output:Compile Time Error 

92) Шта је завршни час?

Ако било коју класу учинимо коначном, не можемо је наследити ни у једну од поткласа.

 final class Bike{} class Honda1 extends Bike{ void run(){System.out.println('running safely with 100kmph');} public static void main(String args[]){ Honda1 honda= new Honda1(); honda.run(); } } 
Тестирајте одмах
 Output:Compile Time Error 
Детаљније.

93) Шта је коначна празна променљива?

Коначна променљива, која није иницијализована у време декларације, позната је као коначна празна променљива. Не можемо директно да иницијализујемо коначну празну променљиву. Уместо тога, морамо да га иницијализујемо коришћењем конструктора класе. Корисно је у случају када корисник има неке податке које други не смеју мењати, на пример ПАН број. Размотрите следећи пример:

 class Student{ int id; String name; final String PAN_CARD_NUMBER; ... } 
Детаљније.

94) Можемо ли иницијализовати коначну празну променљиву?

Да, ако није статичан, можемо га иницијализовати у конструктору. Ако је статичка празна коначна променљива, може се иницијализовати само у статичком блоку. Детаљније.


95) Можете ли главни метод прогласити коначним?

Да, можемо да прогласимо главни метод као јавни статички коначни воид маин(Стринг[] аргс){}.


96) Шта је резултат следећег Јава програма?

 class Main { public static void main(String args[]){ final int i; i = 20; System.out.println(i); } } 

Излаз

 20 

Објашњење

Пошто је и празна коначна варијабла. Може се иницијализирати само једном. Иницијализовали смо га на 20. Дакле, 20 ће бити одштампано.


97) Шта је резултат следећег Јава програма?

 class Base { protected final void getInfo() { System.out.println('method of Base class'); } } public class Derived extends Base { protected final void getInfo() { System.out.println('method of Derived class'); } public static void main(String[] args) { Base obj = new Base(); obj.getInfo(); } } 

Излаз

 Derived.java:11: error: getInfo() in Derived cannot override getInfo() in Base protected final void getInfo() ^ overridden method is final 1 error 

Објашњење

Метод гетДетаилс() је коначан; стога се не може заменити у поткласи.


98) Можемо ли конструктор прогласити коначним?

Конструктор се никада не може прогласити коначним јер се никада не наслеђује. Конструктори нису обичне методе; стога, нема смисла декларисати конструкторе као коначне. Међутим, ако то покушате да урадите, компајлер ће приказати грешку.


99) Можемо ли да прогласимо интерфејс коначним?

Не, не можемо да прогласимо интерфејс коначним јер интерфејс мора да имплементира нека класа да би пружила његову дефиницију. Према томе, нема смисла правити интерфејс коначним. Међутим, ако то покушате да урадите, компајлер ће показати грешку.


100) Која је разлика између коначне методе и апстрактне методе?

Главна разлика између финалне методе и апстрактне методе је у томе што апстрактни метод не може бити коначан јер морамо да их надјачамо у поткласи да бисмо дали његову дефиницију.