logo

300 основни въпроса за интервю за Java | Комплект 1

90% гаранция за въпросите за интервю

Има списък с 300 основни въпроса за интервю за Java. Ако има някакъв основен въпрос за интервю за Java, който ви е зададен, любезно го публикувайте в секцията за задаване на въпроси. Гарантираме, че тук ще получите 90% често задавани въпроси и отговори за интервю.

Отговорите на въпросите за интервюто за Core Java са кратки и по същество. Основните въпроси за интервю за Java са категоризирани в въпроси за интервю за Основи на Java, въпроси за интервю за OOPs, въпроси за интервю за обработка на низове, въпроси за интервю за многопоточна работа, въпроси за интервю за колекция, въпроси за интервю за JDBC и т.н.


1 2 3 4 5

Core Java: Основи на Java Въпроси за интервю


1) Какво е Java?

Java е на високо ниво, обектно-ориентиран , стабилен, сигурен език за програмиране, независим от платформата, високопроизводителен, многонишков и преносим език за програмиране. Разработен е от Джеймс Гослинг през юни 1991 г. Тя може да бъде известна и като платформа, тъй като предоставя собствен JRE и API.


2) Какви са разликите между C++ и Java?

Разликите между C++ и Java са дадени в следващата таблица.

Сравнителен индекс C++Java
Независим от платформата C++ е зависим от платформата.Java е независима от платформата.
Използва се главно за C++ се използва главно за системно програмиране.Java се използва главно за програмиране на приложения. Той се използва широко в прозорци, уеб базирани, корпоративни и мобилни приложения.
Дизайн цел C++ е предназначен за програмиране на системи и приложения. Това беше продължение на Език за програмиране C .Java е проектирана и създадена като интерпретатор за системи за печат, но по-късно е разширена като помощна мрежова изчислителна система. Той е проектиран с цел да бъде лесен за използване и достъпен за по-широка аудитория.
Отивам C++ поддържа командата goto.Java не поддържа командата goto.
Множествено наследяване C++ поддържа множествено наследяване.Java не поддържа множествено наследяване чрез клас. Може да се постигне чрез интерфейси в java .
Претоварване на оператора C++ поддържа претоварване на оператора .Java не поддържа претоварване на оператори.
Указатели C++ поддържа указатели. Можете да напишете указателна програма на C++.Java поддържа указател вътрешно. Въпреки това не можете да напишете програмата за указател в java. Това означава, че java има ограничена поддръжка на указател в Java.
Компилатор и интерпретатор C++ използва само компилатор. C++ се компилира и изпълнява с помощта на компилатора, който преобразува изходния код в машинен код, така че C++ зависи от платформата.Java използва както компилатор, така и интерпретатор. Изходният код на Java се преобразува в байт код по време на компилация. Интерпретаторът изпълнява този байткод по време на изпълнение и произвежда изход. Java се интерпретира, затова е независима от платформата.
Повикване по стойност и Повикване по референция C++ поддържа както извикване по стойност, така и извикване по референция.Java поддържа извикване само по стойност. В java няма извикване чрез препратка.
Структура и съюз C++ поддържа структури и съюзи.Java не поддържа структури и съюзи.
Поддръжка на нишки C++ няма вградена поддръжка за нишки. Той разчита на библиотеки на трети страни за поддръжка на нишки.Java има вграден резба поддържа.
Коментар на документацията C++ не поддържа коментар на документацията.Java поддържа коментар на документацията (/** ... */) за създаване на документация за изходния код на Java.
Виртуална ключова дума C++ поддържа виртуална ключова дума, за да можем да решим дали да заменим дадена функция или не.Java няма виртуална ключова дума. Можем да заменим всички нестатични методи по подразбиране. С други думи, нестатичните методи са виртуални по подразбиране.
неподписано дясно изместване >>> C++ не поддържа оператор >>>.Java поддържа неподписан десен оператор >>>, който запълва нула в горната част за отрицателните числа. За положителни числа работи по същия начин като оператора >>.
Дърво на наследството C++ винаги създава ново дърво на наследяване.Java винаги използва едно дърво на наследяване, защото всички класове са дъщерни на класа Object в java. Обектният клас е коренът на наследяване дърво в java.
Хардуер C++ е по-близо до хардуера.Java не е толкова интерактивна с хардуера.
Обектно ориентиран C++ е обектно-ориентиран език. В езика C обаче йерархията с един корен не е възможна.Java също е обектно-ориентиран език. Въпреки това, всичко (с изключение на основните типове) е обект в Java. Това е йерархия с един корен, тъй като всичко се извлича от java.lang.Object.

3) Избройте характеристиките на езика за програмиране Java.

В езика за програмиране на Java има следните функции.

    просто:Java е лесна за научаване. Синтаксисът на Java е базиран на C++, което улеснява писането на програмата в него.
    Обектно-ориентиран:Java следва обектно-ориентираната парадигма, която ни позволява да поддържаме нашия код като комбинация от различни типове обекти, които включват както данни, така и поведение.
    Преносим:Java поддържа подход за четене веднъж-запис навсякъде. Можем да изпълним Java програмата на всяка машина. Java програмата (.java) се преобразува в байт код (.class), който може лесно да се изпълнява на всяка машина.
    Независимо от платформата:Java е платформено независим език за програмиране. Той е различен от други езици за програмиране като C и C++, които се нуждаят от платформа, за да бъдат изпълнени. Java идва със своята платформа, на която се изпълнява нейният код. Java не зависи от операционната система, която трябва да бъде изпълнена.
    Защитено:Java е защитена, защото не използва изрични указатели. Java също предоставя концепцията за байткод и обработка на изключения, което я прави по-сигурна.
    Здрав:Java е силен език за програмиране, тъй като използва силно управление на паметта. Концепции като автоматично събиране на отпадъци, обработка на изключения и т.н. го правят по-стабилен.
    Неутрална архитектура:Java е архитектурно неутрална, тъй като не зависи от архитектурата. В C размерът на типовете данни може да варира в зависимост от архитектурата (32-битова или 64-битова), която не съществува в Java.
    Тълкувано:Java използва интерпретатора Just-in-time (JIT) заедно с компилатора за изпълнение на програмата.
    Висока производителност:Java е по-бърз от други традиционни интерпретирани езици за програмиране, защото байт кодът на Java е „близък“ до собствения код. Той все още е малко по-бавен от компилиран език (напр. C++).
    Многонишков:Можем да напишем Java програми, които се справят с много задачи наведнъж, като дефинираме множество нишки. Основното предимство на многопоточността е, че тя не заема памет за всяка нишка. Той споделя обща област на паметта. Нишките са важни за мултимедия, уеб приложения и др.
    Разпространено:Java се разпространява, защото улеснява потребителите да създават разпределени приложения в Java. RMI и EJB се използват за създаване на разпределени приложения. Тази функция на Java ни позволява да имаме достъп до файлове чрез извикване на методите от всяка машина в интернет.
    Динамичен:Java е динамичен език. Поддържа динамично зареждане на класове. Това означава, че класовете се зареждат при поискване. Той също така поддържа функции от родните си езици, т.е. C и C++.

4) Какво разбирате под Java виртуална машина?

Java виртуална машина е виртуална машина, която позволява на компютъра да изпълнява програмата Java. JVM действа като машина за изпълнение, която извиква основния метод, присъстващ в Java кода. JVM е спецификацията, която трябва да бъде внедрена в компютърната система. Кодът на Java се компилира от JVM, за да бъде байткод, който е машинно независим и близък до собствения код.


5) Каква е разликата между JDK, JRE и JVM?

JVM

JVM е акроним за Java Virtual Machine; това е абстрактна машина, която осигурява среда за изпълнение, в която Java байт кодът може да бъде изпълнен. Това е спецификация, която определя работата на Java Virtual Machine. Внедряването му е осигурено от Oracle и други компании. Реализацията му е известна като JRE.

JVM са налични за много хардуерни и софтуерни платформи (така че JVM зависи от платформата). Това е екземпляр по време на изпълнение, който се създава, когато стартираме Java класа. Има три понятия за JVM: спецификация, реализация и екземпляр.

JRE

JRE означава Java Runtime Environment. Това е внедряването на JVM. Java Runtime Environment е набор от софтуерни инструменти, които се използват за разработване на Java приложения. Използва се за осигуряване на среда за изпълнение. Това е внедряването на JVM. Физически съществува. Той съдържа набор от библиотеки + други файлове, които JVM използва по време на изпълнение.

JDK

JDK е акроним за Java Development Kit. Това е среда за разработка на софтуер, която се използва за разработване на Java приложения и аплети. Физически съществува. Той съдържа JRE + инструменти за разработка. JDK е реализация на която и да е от посочените по-долу Java платформи, издадени от Oracle Corporation:

  • Стандартно издание Java платформа
  • Enterprise Edition Java платформа
  • Micro Edition Java платформа
Повече информация.

6) Колко типа области на паметта се разпределят от JVM?

Много видове:

    Област на клас (метод):Class Area съхранява структури за клас, като пул от константи по време на изпълнение, поле, данни за метод и код за методи.Купчина:Това е областта за данни по време на изпълнение, в която паметта се разпределя за обектитеСтек:Java Stack съхранява рамки. Той съдържа локални променливи и частични резултати и играе роля в извикването и връщането на метода. Всяка нишка има частен JVM стек, създаден по същото време като нишката. Нов кадър се създава всеки път, когато се извиква метод. Кадър се унищожава, когато извикването на метода му завърши.Регистър на брояча на програмата:PC (програмен брояч) регистър съдържа адреса на инструкцията на Java виртуалната машина, която се изпълнява в момента.Стек на родния метод:Той съдържа всички собствени методи, използвани в приложението.
Повече информация.

7) Какво е JIT компилатор?

Компилатор Just-In-Time (JIT): Използва се за подобряване на производителността. JIT компилира части от байт кода, които имат подобна функционалност по едно и също време и по този начин намалява времето, необходимо за компилиране. Тук терминът компилатор се отнася до транслатор от набора от инструкции на виртуална машина на Java (JVM) към набора от инструкции на конкретен процесор.


8) Какво представлява платформата?

Платформата е хардуерна или софтуерна среда, в която се изпълнява част от софтуера. Има два вида платформи, базирани на софтуер и базирани на хардуер. Java предоставя софтуерно базирана платформа.


9) Какви са основните разлики между платформата Java и другите платформи?

Има следните разлики между платформата Java и други платформи.

  • Java е софтуерно базирана платформа, докато други платформи могат да бъдат хардуерни платформи или софтуерно базирани платформи.
  • Java се изпълнява върху други хардуерни платформи, докато други платформи могат да имат само хардуерни компоненти.

10) Какво придава на Java характера „пиши веднъж и стартирай навсякъде“?

Байт кодът. Компилаторът на Java преобразува програмите на Java в клас файл (байтов код), който е междинният език между изходния код и машинния код. Този байт код не е специфичен за платформата и може да се изпълни на всеки компютър.


11) Какво е classloader?

Classloader е подсистема на JVM, която се използва за зареждане на клас файлове. Всеки път, когато стартираме java програмата, тя се зарежда първо от програмата за зареждане на класове. В Java има три вградени програми за зареждане на класове.

    Bootstrap ClassLoader: Това е първият зареждащ клас, който е суперклас на зареждащия клас за разширение. Зарежда се rt.jar файл, който съдържа всички клас файлове на Java Standard Edition като класове пакети java.lang, класове пакети java.net, класове пакети java.util, класове пакети java.io, класове пакети java.sql и др.Разширение ClassLoader: Това е дъщерното средство за зареждане на класове на Bootstrap и родителско средство за зареждане на класове на System classloader. Той зарежда jar файловете, намиращи се вътре $JAVA_HOME/jre/lib/ext указател.Система/Приложение ClassLoader: Това е дъщерният зареждащ клас на Extension classloader. Той зарежда файловете на класа от пътя на класа. По подразбиране classpath е зададен на текущата директория. Можете да промените пътя на класа, като използвате превключвателя '-cp' или '-classpath'. Известен е също като Application classloader.

12) Името на празен .java файл валидно име на изходен файл ли е?

Да, Java позволява да запазим нашия java файл чрез .java само трябва да го компилираме от javac .java и тичай от java име на клас Да вземем прост пример:

 //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 

компилирайте го от javac .java

прокарайте го Java A


13) Ключовата дума delete, next, main, exit или null в java ли е?

Не.


14) Ако не предоставя никакви аргументи на командния ред, тогава каква ще бъде стойността, съхранена в масива String, предадена в метода main(), празна или NULL?

Той е празен, но не е нулев.


15) Какво ще стане, ако напиша static public void вместо public static void?

Програмата се компилира и работи правилно, защото редът на спецификаторите няма значение в Java.


16) Каква е стойността по подразбиране на локалните променливи?

Локалните променливи не се инициализират до стойност по подразбиране, нито примитиви, нито препратки към обекти.


17) Какви са различните спецификатори за достъп в Java?

В Java спецификаторите за достъп са ключовите думи, които се използват за определяне на обхвата на достъп на метода, класа или променливата. В Java има четири спецификатора за достъп, дадени по-долу.

    ОбщественКласовете, методите или променливите, които са дефинирани като публични, могат да бъдат достъпни от всеки клас или метод.ЗащитенProtected може да бъде достъпен от класа на същия пакет, или от подкласа на този клас, или в рамките на същия клас.По подразбиранеСтандартните са достъпни само в рамките на пакета. По подразбиране всички класове, методи и променливи са с обхват по подразбиране.ЧастноЧастният клас, методите или променливите, дефинирани като частни, могат да бъдат достъпни само в рамките на класа.

18) Каква е целта на статичните методи и променливи?

Методите или променливите, дефинирани като статични, се споделят между всички обекти на класа. Статичното е част от класа, а не от обекта. Статичните променливи се съхраняват в областта на класа и не е необходимо да създаваме обект за достъп до такива променливи. Следователно static се използва в случая, когато трябва да дефинираме променливи или методи, които са общи за всички обекти на класа.

Например, в класа, симулиращ колекцията от студенти в колеж, името на колежа е общият атрибут за всички студенти. Следователно името на колежа ще бъде определено като статичен .


19) Какви са предимствата на пакетите в Java?

Има различни предимства на дефинирането на пакети в Java.

  • Пакетите избягват сблъсъците с имена.
  • Пакетът осигурява по-лесен контрол на достъпа.
  • Можем също да имаме скрити класове, които не се виждат отвън и се използват от пакета.
  • По-лесно е да намерите свързаните класове.

20) Какъв е резултатът от следната Java програма?

 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 се третира като низ и се свързва с низа Javatpoint . Следователно изходът ще бъде 30Javatpoint .

Във втория случай низът Javatpoint е конкатениран с 10, за да бъде низът Javatpoint10 което след това ще бъде съединено с 20 Javatpoint1020 .


21) Какъв е резултатът от следната Java програма?

 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 се третира като низ и се свързва с низа Javatpoint да произведе продукцията 200Javatpoint .

Във втория случай числата 10 и 20 ще бъдат умножени първо, за да станат 200, тъй като предимството на умножението е по-високо от събирането. Резултатът 200 ще се третира като низ и ще бъде свързан с низа Javatpoint да произведе изхода като Javatpoint200 .


22) Какъв е резултатът от следната Java програма?

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

Горният код ще даде грешка по време на компилиране, защото цикълът for изисква булева стойност във втората част и ние предоставяме целочислена стойност, т.е. 0.


Основна Java - Концепции за ООП: Първоначални въпроси за интервю за ООП

Дадени са повече от 50 въпроса за интервю за ООП (обектно-ориентирано програмиране и система). Въпреки това, те са категоризирани в много раздели като въпроси за интервю за конструктор, въпроси за статично интервю, въпроси за интервю за наследство, въпрос за интервю за абстракция, въпроси за интервю за полиморфизъм и т.н. за по-добро разбиране.


23) Какво е обектно-ориентирана парадигма?

Това е програмна парадигма, базирана на обекти с данни и методи, дефинирани в класа, към който принадлежи. Обектно-ориентираната парадигма има за цел да включи предимствата на модулността и повторното използване. Обектите са екземпляри на класове, които взаимодействат един с друг, за да проектират приложения и програми. Има следните характеристики на обектно-ориентираната парадигма.

  • Следва подхода отдолу нагоре в програмния дизайн.
  • Съсредоточете се върху данните с методи за работа с данните на обекта
  • Включва концепция като капсулиране и абстракция, която скрива сложността от потребителя и показва само функционалност.
  • Внедрява подхода в реално време като наследяване, абстракция и др.
  • Примерите за обектно-ориентираната парадигма са C++, Simula, Smalltalk, Python, C# и др.

24) Какво е обект?

Обектът е обект в реално време, който има някакво състояние и поведение. В Java Object е екземпляр на класа, който има променливите на екземпляра като състояние на обекта и методите като поведение на обекта. Обектът на клас може да бъде създаден с помощта на нов ключова дума.


25) Каква е разликата между обектно-ориентиран език за програмиране и обектно-базиран език за програмиране?

Съществуват следните основни разлики между обектно-ориентирания език и обектно-базирания език.

  • Обектно-ориентираните езици следват всички концепции на ООП, докато обектно-базираният език не следва всички концепции на ООП като наследяване и полиморфизъм.
  • Обектно-ориентираните езици нямат вградени обекти, докато обектно-базираните езици имат вградени обекти, например JavaScript има обект прозорец.
  • Примери за обектно-ориентирано програмиране са Java, C#, Smalltalk и др., докато примерите за обектно-базирани езици са JavaScript, VBScript и др.

26) Каква ще бъде първоначалната стойност на препратка към обект, която е дефинирана като променлива на екземпляр?

Всички препратки към обекти се инициализират до null в Java.


Core Java - OOPs Концепции: Въпроси за интервю за конструктор


27) Какво представлява конструкторът?

Конструкторът може да се дефинира като специален тип метод, който се използва за инициализиране на състоянието на обект. Той се извиква, когато класът е инстанциран и паметта е разпределена за обекта. Всеки път се създава обект с помощта на нов ключова дума се извиква конструкторът по подразбиране на класа. Името на конструктора трябва да е подобно на името на класа. Конструкторът не трябва да има изричен тип връщане.

Повече информация.

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

Въз основа на параметрите, предадени в конструкторите, в Java има два типа конструктори.

    Конструктор по подразбиране:Конструкторът по подразбиране е този, който не приема никаква стойност. Конструкторът по подразбиране се използва главно за инициализиране на променливата на екземпляра със стойностите по подразбиране. Може да се използва и за изпълнение на някои полезни задачи при създаване на обекти. Конструкторът по подразбиране се извиква имплицитно от компилатора, ако в класа няма дефиниран конструктор.Параметризиран конструктор:Параметризираният конструктор е този, който може да инициализира променливите на екземпляра с дадените стойности. С други думи, можем да кажем, че конструкторите, които могат да приемат аргументите, се наричат ​​параметризирани конструктори.
Java конструктори

29) Каква е целта на конструктора по подразбиране?

Целта на конструктора по подразбиране е да присвои стойността по подразбиране на обектите. Java компилаторът имплицитно създава конструктор по подразбиране, ако в класа няма конструктор.

 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 и null стойности се предоставят от конструктора по подразбиране.

Java конструктор по подразбиране
Повече информация.

30) Конструкторът връща ли някаква стойност?

Години: да, Конструкторът имплицитно връща текущия екземпляр на класа (Не можете да използвате изричен тип връщане с конструктора). Повече информация.


31) Конструкторът наследява ли се?

Не, конструкторът не се наследява.


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

Не, конструкторът не може да е окончателен.

преименуване на директория в linux

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); } } 

В горната програма тестът на конструктора е претоварен с друг конструктор. При първото извикване на конструктора се извиква конструкторът с един аргумент и i ще бъде инициализиран със стойност 10. Въпреки това, при второто извикване на конструктора се извиква конструкторът с 2 аргумента и i ще бъде инициализиран със стойност 15.


34) Какво разбирате под конструктор за копиране в Java?

В java няма конструктор за копиране. Въпреки това можем да копираме стойностите от един обект в друг като конструктора за копиране в C++.

Има много начини за копиране на стойностите на един обект в друг в java. Те са:

  • По конструктор
  • Чрез присвояване на стойностите на един обект в друг
  • Чрез метода clone() на класа Object

В този пример ще копираме стойностите на един обект в друг с помощта на java конструктор.

 //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) Какви са разликите между конструкторите и методите?

Има много разлики между конструктори и методи. Те са дадени по-долу.

Java конструкторJava метод
Конструкторът се използва за инициализиране на състоянието на обект.Използва се метод за излагане на поведението на даден обект.
Конструкторът не трябва да има тип връщане.Методът трябва да има тип връщане.
Конструкторът се извиква имплицитно.Методът се извиква изрично.
Компилаторът на Java предоставя конструктор по подразбиране, ако нямате конструктор в клас.Методът не се предоставя от компилатора във всеки случай.
Името на конструктора трябва да е същото като името на класа.Името на метода може или не може да е същото като името на класа.

Java конструктори срещу методи

36) Какъв е резултатът от следната Java програма?

 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 

Тук типът данни на променливите a и b, т.е. byte, се повишава до int и се извиква първият параметризиран конструктор с двата целочислени параметъра.


37) Какъв е резултатът от следната Java програма?

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

Резултатът от програмата е 0, тъй като променливата i се инициализира на 0 вътрешно. Тъй като знаем, че конструкторът по подразбиране се извиква имплицитно, ако в класа няма конструктор, променливата i се инициализира на 0, тъй като в класа няма конструктор.


38) Какъв е резултатът от следната Java програма?

 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); } } 

Има грешка на компилатора в програмата, защото има извикване на конструктора по подразбиране в основния метод, който не присъства в класа. В класа Test обаче има само един параметризиран конструктор. Следователно нито един конструктор по подразбиране не се извиква имплицитно от конструктора.


Core Java - OOPs концепции: статична ключова дума Въпроси за интервю


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) Какви са ограниченията, които се прилагат към статичните методи на Java?

Към статичните методи се прилагат две основни ограничения.

  • Статичният метод не може да използва член на нестатични данни или да извиква директно нестатичния метод.
  • this и super не могат да се използват в статичен контекст, тъй като са нестатични.

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

Тъй като не се изисква обектът да извиква статичния метод. Ако направим основния метод нестатичен, JVM ще трябва първо да създаде своя обект и след това да извика метода main(), което ще доведе до допълнително разпределение на паметта. Повече информация.


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) Можем ли да изпълним програма без main() метод?

Отг.) Не, беше възможно преди JDK 1.7 с помощта на статичен блок. От JDK 1.7 не е възможно. Повече информация.


46) Какво става, ако статичният модификатор бъде премахнат от сигнатурата на основния метод?

Програмата се компилира. По време на изпълнение обаче извежда грешка „NoSuchMethodError“.


47) Каква е разликата между статичен (клас) метод и метод на екземпляр?

статичен или класов методметод на инстанция
1) Метод, който е деклариран като статичен, е известен като статичен метод.Метод, който не е деклариран като статичен, е известен като метод на екземпляр.
2) Не е необходимо да създаваме обекти, за да извикаме статичните методи.Обектът е необходим за извикване на методите на екземпляра.
3) Нестатичните (инстанционни) членове не могат да бъдат достъпни в статичен контекст (статичен метод, статичен блок и статичен вложен клас) директно.Статичните и нестатичните променливи могат да бъдат достъпни в методи на екземпляр.
4) Например: public static int cube(int n){ return n*n*n;}Например: public void msg(){...}.

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

Както знаем, статичният контекст (метод, блок или променлива) принадлежи на класа, а не на обекта. Тъй като конструкторите се извикват само когато обектът е създаден, няма смисъл конструкторите да са статични. Ако обаче се опитате да го направите, компилаторът ще покаже грешката на компилатора.


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

В Java, ако направим абстрактните методи статични, те ще станат част от класа и можем директно да го извикаме, което е ненужно. Извикването на недефиниран метод е напълно безполезно, следователно не е разрешено.


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 

Core Java - OOPs концепции: въпроси за интервю за наследяване


51) Какво е това ключова дума в java?

The това ключова дума е референтна променлива, която препраща към текущия обект. Има различни употреби на тази ключова дума в Java. Може да се използва за препращане към свойства на текущия клас като методи на екземпляр, променлива, конструктори и т.н. Може също да се предава като аргумент в методите или конструкторите. Може също да бъде върнат от метода като текущия екземпляр на класа.

java тази ключова дума
Повече информация.

52) Какви са основните употреби на тази ключова дума?

Има следните употреби на това ключова дума.

    товаможе да се използва за препращане към променливата на екземпляра на текущия клас.товаможе да се използва за извикване на метод на текущия клас (имплицитно)това()може да се използва за извикване на текущия конструктор на клас.товаможе да се предава като аргумент в извикването на метода.товаможе да се предава като аргумент в извикването на конструктора.товаможе да се използва за връщане на текущия клас от метода.

53) Можем ли да присвоим препратката към това променлива?

Не, това не може да бъде присвоено на никаква стойност, защото винаги сочи към текущия обект на клас и това е последната препратка в Java. Ако обаче се опитаме да го направим, ще се покаже грешката на компилатора. Помислете за следния пример.

 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) Какво е наследството?

Наследяването е механизъм, чрез който един обект придобива всички свойства и поведение на друг обект от друг клас. Използва се за повторно използване на кода и замяна на метода. Идеята зад наследяването в Java е, че можете да създавате нови класове, които са изградени върху съществуващи класове. Когато наследявате от съществуващ клас, можете да използвате повторно методи и полета на родителския клас. Освен това можете да добавяте нови методи и полета и в текущия си клас. Наследяването представлява връзката IS-A, която е известна също като връзка родител-дете.

В Java има пет типа наследяване.

  • Наследяване на едно ниво
  • Многостепенно наследяване
  • Множествено наследяване
  • Йерархично наследяване
  • Хибридно наследяване

Множественото наследяване не се поддържа в Java чрез клас.

Повече информация.

58) Защо наследяването се използва в Java?

Има различни предимства от използването на наследяване в Java, които са дадени по-долу.

  • Наследяването осигурява повторно използване на кода. Производният клас не трябва да предефинира метода на базовия клас, освен ако не трябва да предостави специфичната реализация на метода.
  • Полиморфизмът по време на изпълнение не може да бъде постигнат без използване на наследяване.
  • Можем да симулираме наследяването на класове с обекти в реално време, което прави ООП по-реалистични.
  • Наследяването осигурява скриване на данни. Базовият клас може да скрие някои данни от производния клас, като го направи частен.
  • Замяната на метода не може да бъде постигната без наследяване. Чрез заместване на метода можем да дадем специфична реализация на някакъв основен метод, съдържащ се в базовия клас.

59) Кой клас е суперклас за всички класове?

Обектният клас е суперкласът на всички други класове в Java.


60) Защо множественото наследяване не се поддържа в java?

За да се намали сложността и да се опрости езикът, множественото наследяване не се поддържа в java. Помислете за сценарий, при който A, B и C са три класа. Класът C наследява класовете A и B. Ако класове A и B имат един и същ метод и го извиквате от обект на дъщерен клас, ще има неяснота при извикването на метода на клас A или B.

Тъй като грешките по време на компилиране са по-добри от грешките по време на изпълнение, Java изобразява грешка по време на компилиране, ако наследите 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) Какво е агрегиране?

Агрегирането може да се дефинира като връзка между два класа, където агрегатният клас съдържа препратка към класа, който притежава. Агрегацията е най-добре описана като a има връзка. Например агрегатният клас Employee с различни полета като възраст, име и заплата също съдържа обект от клас Address с различни полета като Address-Line 1, City, State и pin-code. С други думи, можем да кажем, че Служител (клас) има обект от клас Адрес. Помислете за следния пример.

Адрес.java

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

Служител.java

 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) Защо Java не поддържа указатели?

Указателят е променлива, която се отнася до адреса на паметта. Те не се използват в Java, защото не са безопасни (незащитени) и сложни за разбиране.


65) Какво е супер в java?

The супер ключовата дума в Java е референтна променлива, която се използва за препратка към обекта на непосредствения родителски клас. Всеки път, когато създавате екземпляр на подкласа, имплицитно се създава екземпляр на родителския клас, който се препраща от променлива за супер справка. Super() се извиква имплицитно в конструктора на класа от компилатора, ако няма super или this.

 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) Как може да се направи верижно свързване на конструктор с помощта на ключовата дума super?

 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) Какви са основните употреби на ключовата дума super?

Има следните употреби на ключова дума super.

  • super може да се използва за препратка към променливата на екземпляра на непосредствения родителски клас.
  • super може да се използва за извикване на метода на непосредствения родителски клас.
  • super() може да се използва за извикване на конструктор на непосредствен родителски клас.

68) Какви са разликите между тази и супер ключова дума?

Има следните разлики между тази и супер ключова дума.

  • Ключовата дума super винаги сочи към контекста на родителския клас, докато тази ключова дума винаги сочи към контекста на текущия клас.
  • Ключовата дума super се използва основно за инициализиране на променливите на базовия клас в конструктора на производния клас, докато тази ключова дума се използва предимно за разграничаване между локални и променливи на екземпляр, когато се предава в конструктора на класа.
  • Супер и това трябва да е първият израз в конструктора, в противен случай компилаторът ще изведе грешка.

69) Какъв е резултатът от следната Java програма?

 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 

Обяснение

Super() се извиква имплицитно от компилатора, ако няма super() или this() е включен изрично в конструктора на производния клас. Следователно в този случай първо се извиква конструкторът на класа The Person и след това се извиква конструкторът на клас Employee.


70) Можете ли да използвате this() и super() и двете в конструктор?

Не, защото this() и super() трябва да са първите изрази в конструктора на класа.

Пример:

 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)Какво е клониране на обект?

Клонирането на обект се използва за създаване на точно копие на обект. Методът clone() на класа Object се използва за клониране на обект. The java.lang.Cloneable интерфейсът трябва да бъде имплементиран от класа, чийто обектен клонинг искаме да създадем. Ако не внедрим Cloneable интерфейс, методът clone() генерира CloneNotSupportedException.

 protected Object clone() throws CloneNotSupportedException 
Повече информация.

Core Java - OOPs Концепции: Въпроси за интервю за претоварване на метода


72) Какво е претоварване на метода?

Претоварването на метода е техниката на полиморфизма, която ни позволява да създаваме множество методи с едно и също име, но различен подпис. Можем да постигнем претоварване на метода по два начина.

  • Чрез промяна на броя на аргументите
  • Чрез промяна на типа данни на аргументите

Претоварването на метода увеличава четливостта на програмата. Претоварването на метода се извършва, за да се разбере програмата бързо.

Повече информация.

73) Защо претоварването на метода не е възможно чрез промяна на типа на връщане в java?

В Java претоварването на метода не е възможно чрез промяна на типа на връщане на програмата поради избягване на неяснотата.

 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) Можем ли да претоварим метода main()?

Да, можем да имаме произволен брой основни методи в програма на Java, като използваме претоварване на методи.

Повече информация.

76) Какво е претоварване на метода с промоция на типа?

Под промоция на тип е претоварване на метод, имаме предвид, че един тип данни може да бъде промотиран към друг имплицитно, ако не бъде намерено точно съвпадение.

Претоварване на Java метод с промоция на типа

Както е показано на диаграмата по-горе, байтът може да бъде повишен в short, int, long, float или double. Краткият тип данни може да бъде повишен в int, long, float или double. Типът данни char може да бъде повишен в int, long, float или double и т.н. Помислете за следния пример.

 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) Какъв е резултатът от следната Java програма?

 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 

Обяснение

Има два метода, дефинирани с едно и също име, т.е. сума. Първият метод приема тип integer и long, докато вторият метод приема long и тип integer. Предаденият параметър е a = 20, b = 20. Не можем да кажем кой метод ще бъде извикан, тъй като няма ясно споменато разграничение между целочислен литерал и дълъг литерал. Това е случаят на неяснота. Следователно компилаторът ще изведе грешка.


Core Java - OOPs Концепции: Въпроси за интервю с приоритет на метода


78) Какво е отмяна на метода:

Ако даден подклас предоставя конкретна реализация на метод, който вече е осигурен от неговия родителски клас, той е известен като замяна на метода. Използва се за полиморфизъм по време на изпълнение и за прилагане на интерфейсните методи.

Правила за отмяна на метода

  • Методът трябва да има същото име като в родителския клас.
  • Методът трябва да има същата сигнатура като в родителския клас.
  • Два класа трябва да имат връзка IS-A помежду си.
Повече информация.


79) Можем ли да отменим статичния метод?

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


80) Защо не можем да заменим статичния метод?

Това е така, защото статичният метод е част от класа и е обвързан с класа, докато методът на екземпляра е обвързан с обекта и статичният получава памет в областта на класа, а екземплярът получава памет в купчина.


81) Можем ли да отменим претоварения метод?

да


82) Разлика между метода Overloading и Overriding.

Претоварване на методаЗамяна на метода
1) Претоварването на метода увеличава четливостта на програмата.Замяната на метода осигурява специфичното изпълнение на метода, което вече е предоставено от неговия суперклас.
2) В рамките на класа възниква претоварване на метода.Замяната на метода се извършва в два класа, които имат връзка IS-A помежду си.
3) В този случай параметрите трябва да са различни.В този случай параметрите трябва да са еднакви.

83) Можем ли да заменим частните методи?

Не, не можем да отменим частните методи, защото обхватът на частните методи е ограничен до класа и нямаме достъп до тях извън класа.


84) Можем ли да променим обхвата на заменения метод в подкласа?

Да, можем да променим обхвата на заменения метод в подкласа. Трябва обаче да отбележим, че не можем да намалим достъпността на метода. Следната точка трябва да се вземе предвид, докато променяте достъпността на метода.

  • Частното може да бъде променено на защитено, публично или по подразбиране.
  • Защитените могат да бъдат променени на публични или по подразбиране.
  • По подразбиране може да се промени на публичен.
  • Публиката винаги ще си остане публична.

85) Можем ли да модифицираме клаузата throws на метода на суперкласа, като същевременно го заместваме в подкласа?

Да, можем да модифицираме клаузата throws на метода на суперкласа, като същевременно го заместваме в подкласа. Има обаче някои правила, които трябва да се спазват при отмяна в случай на обработка на изключение.

  • Ако методът на суперкласа не декларира изключение, заместеният метод на подклас не може да декларира провереното изключение, но може да декларира непровереното изключение.
  • Ако методът на суперкласа декларира изключение, заместеният метод на подклас може да декларира същото, изключение на подклас или да няма изключение, но не може да декларира родителско изключение.

86) Какъв е резултатът от следната Java програма?

 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 

Обяснение

Методът() е претоварен в клас Base, докато е извлечен в клас Derived с двоен тип като параметър. При извикването на метода се предава цялото число.

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

Да, всички функции в Java са виртуални по подразбиране.


88) Какво е ковариантен тип връщане?

Сега, след java5, е възможно да се замени всеки метод чрез промяна на типа на връщане, ако типът на връщане на метода за замяна на подклас е тип на подклас. Известен е като ковариантен тип връщане. Ковариантният тип връщане указва, че типът връщане може да варира в същата посока като подкласа.

 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) Какъв е резултатът от следната Java програма?

 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 ... 

Обяснение

Методът на базовия клас, т.е. baseMethod() е заменен в производния клас. В тестовия клас референтната променлива b (от тип Base class) се отнася до екземпляра на производния клас. Тук се постига полиморфизъм по време на изпълнение между клас Base и Derived. По време на компилиране наличието на метод baseMethod се проверява в базовия клас, ако е налице, тогава програмата е компилирана, в противен случай ще се покаже грешката на компилатора. В този случай baseMethod присъства в базовия клас; следователно е компилиран успешно. По време на изпълнение обаче той проверява дали baseMethod е бил заменен от производен клас, ако е така, тогава се извиква методът на производния клас, в противен случай се извиква методът на базовия клас. В този случай класът Derived замества baseMethod; следователно се извиква методът на производния клас.


Core Java - OOPs концепции: въпроси за интервю за крайна ключова дума


90) Каква е крайната променлива?

В Java крайната променлива се използва, за да ограничи потребителя да я актуализира. Ако инициализираме крайната променлива, не можем да променим нейната стойност. С други думи, можем да кажем, че крайната променлива, веднъж присвоена на стойност, никога не може да бъде променена след това. Крайната променлива, която не е присвоена на никаква стойност, може да бъде присвоена само чрез конструктора на класа.

крайна ключова дума в java
 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) Каква е крайната празна променлива?

Крайна променлива, която не е инициализирана по време на декларацията, е известна като крайна празна променлива. Не можем да инициализираме крайната празна променлива директно. Вместо това трябва да го инициализираме с помощта на конструктора на класа. Полезно е в случай, че потребителят има някои данни, които не трябва да се променят от други, например PAN номер. Разгледайте следния пример:

 class Student{ int id; String name; final String PAN_CARD_NUMBER; ... } 
Повече информация.

94) Можем ли да инициализираме крайната празна променлива?

Да, ако не е статичен, можем да го инициализираме в конструктора. Ако е статична празна крайна променлива, тя може да се инициализира само в статичния блок. Повече информация.


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

Да, можем да декларираме основния метод като public static final void main(String[] args){}.


96) Какъв е резултатът от следната Java програма?

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

Изход

 20 

Обяснение

Тъй като i е празната крайна променлива. Може да се инициализира само веднъж. Инициализирахме го на 20. Следователно 20 ще бъде отпечатано.


97) Какъв е резултатът от следната Java програма?

 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 

Обяснение

Методът getDetails() е окончателен; следователно не може да бъде заменено в подкласа.


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

Конструкторът никога не може да бъде деклариран като окончателен, защото никога не се наследява. Конструкторите не са обикновени методи; следователно няма смисъл да се декларират конструктори като окончателни. Ако обаче се опитате да го направите, компилаторът ще изведе грешка.


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

Не, не можем да декларираме интерфейс като окончателен, защото интерфейсът трябва да бъде имплементиран от някакъв клас, за да предостави своята дефиниция. Следователно няма смисъл да се прави финален интерфейс. Ако обаче се опитате да го направите, компилаторът ще покаже грешка.


100) Каква е разликата между крайния метод и абстрактния метод?

Основната разлика между окончателния метод и абстрактния метод е, че абстрактният метод не може да бъде окончателен, тъй като трябва да ги отменим в подкласа, за да дадем неговата дефиниция.