logo

300 základních otázek k rozhovoru v jazyce Java | Sada 1

90% jistota otázek na pohovoru

Zde je seznam 300 klíčových otázek pro Java rozhovor. Pokud vám byla položena nějaká základní otázka k rozhovoru v jazyce Java, zašlete ji prosím do sekce dotazů. Ujišťujeme vás, že zde najdete 90 % často kladených otázek a odpovědí na pohovor.

Odpovědi na otázky týkající se Core Java rozhovoru jsou krátké a věcné. Základní otázky pohovoru v jazyce Java jsou rozděleny do kategorií Základy pohovorů v jazyce Java, otázky pohovoru OOP, otázky pohovoru se zpracováním řetězců, otázky vícevláknového pohovoru, otázky sběrného pohovoru, otázky pohovoru JDBC atd.


1 2 3 4 5

Core Java: Základy Java Interview Otázky


1) Co je Java?

Jáva je na vysoké úrovni, objektově orientovaný , robustní, bezpečný programovací jazyk, nezávislý na platformě, vysoce výkonný, vícevláknový a přenosný programovací jazyk. Byl vyvinut společností James Gosling v červnu 1991. Může být také známá jako platforma, protože poskytuje své vlastní JRE a API.


2) Jaké jsou rozdíly mezi C++ a Java?

Rozdíly mezi C++ a Java jsou uvedeny v následující tabulce.

Srovnávací index C++Jáva
Nezávislé na platformě C++ je závislé na platformě.Java je nezávislá na platformě.
Používá se hlavně pro C++ se používá hlavně pro systémové programování.Java se používá hlavně pro programování aplikací. Je široce používán v okenních, webových, podnikových a mobilních aplikacích.
Cíl designu C++ bylo navrženo pro programování systémů a aplikací. Bylo to rozšíření C programovací jazyk .Java byla navržena a vytvořena jako interpret pro tiskové systémy, ale později byla rozšířena jako podpora síťových počítačů. Byl navržen s cílem, aby byl snadno použitelný a dostupný širšímu publiku.
Jít do C++ podporuje příkaz goto.Java nepodporuje příkaz goto.
Vícenásobná dědičnost C++ podporuje vícenásobnou dědičnost.Java nepodporuje vícenásobné dědění prostřednictvím třídy. Toho lze dosáhnout tím rozhraní v Javě .
Přetížení operátora C++ podporuje přetížení operátora .Java nepodporuje přetěžování operátorů.
Ukazatele C++ podporuje ukazatele . Ukazovací program můžete napsat v C++.Java interně podporuje ukazatel. Ukazovací program však nemůžete napsat v jazyce Java. To znamená, že Java má v Javě omezenou podporu ukazatelů.
Překladač a tlumočník C++ používá pouze kompilátor. C++ se kompiluje a spouští pomocí kompilátoru, který převádí zdrojový kód na strojový kód, takže C++ je závislý na platformě.Java používá jak kompilátor, tak interpret. Zdrojový kód Java je v době kompilace převeden na bajtový kód. Interpret spustí tento bajtkód za běhu a vytvoří výstup. Java je interpretována proto, že je nezávislá na platformě.
Volání podle hodnoty a volání podle reference C++ podporuje volání podle hodnoty i volání podle odkazu.Java podporuje volání pouze podle hodnoty. V Javě není žádné volání odkazem.
Struktura a unie C++ podporuje struktury a sjednocení.Java nepodporuje struktury a svazy.
Podpora vláken C++ nemá vestavěnou podporu pro vlákna. Při podpoře vláken se spoléhá na knihovny třetích stran.Java má vestavěný vlákno Podpěra, podpora.
Komentář k dokumentaci C++ nepodporuje komentář k dokumentaci.Java podporuje komentář k dokumentaci (/** ... */) pro vytvoření dokumentace pro zdrojový kód Java.
Virtuální klíčové slovo C++ podporuje virtuální klíčové slovo, takže se můžeme rozhodnout, zda funkci přepíšeme nebo ne.Java nemá žádné virtuální klíčové slovo. Všechny nestatické metody můžeme standardně přepsat. Jinými slovy, nestatické metody jsou ve výchozím nastavení virtuální.
pravý posun bez znaménka >>> C++ nepodporuje operátor >>>.Java podporuje unsigned right shift >>> operátor, který vyplní nulu nahoře pro záporná čísla. Pro kladná čísla to funguje stejně jako operátor >>.
Strom dědičnosti C++ vždy vytvoří nový strom dědičnosti.Java vždy používá jeden strom dědičnosti, protože všechny třídy jsou potomky třídy Object v jazyce Java. Třída objektu je kořenem třídy dědictví strom v Javě.
Hardware C++ je blíže hardwaru.Java není tak interaktivní s hardwarem.
Objektově orientovaný C++ je objektově orientovaný jazyk. V jazyce C však není možná hierarchie jednoho kořene.Java je také objektově orientovaný Jazyk. Všechno (kromě základních typů) je však v Javě objektem. Je to jediná kořenová hierarchie, protože vše je odvozeno od java.lang.Object.

3) Vyjmenujte vlastnosti programovacího jazyka Java.

Programovací jazyk Java obsahuje následující funkce.

    Jednoduchý:Java se dá snadno naučit. Syntaxe Javy je založena na C++, což usnadňuje psaní programu v ní.
    Objektově orientované:Java se řídí objektově orientovaným paradigmatem, které nám umožňuje udržovat náš kód jako kombinaci různých typů objektů, které zahrnují jak data, tak chování.
    Přenosný:Java podporuje přístup čtení-jednou-zápis-kdekoli. Java program můžeme spustit na každém počítači. Java program (.java) je převeden na bytecode (.class), který lze snadno spustit na každém počítači.
    Nezávislé na platformě:Java je programovací jazyk nezávislý na platformě. Liší se od jiných programovacích jazyků, jako je C a C++, které potřebují platformu, která má být spuštěna. Java přichází se svou platformou, na které se spouští její kód. Java nezávisí na operačním systému, který má být spuštěn.
    Zabezpečeno:Java je zabezpečená, protože nepoužívá explicitní ukazatele. Java také poskytuje koncept zpracování ByteCode a výjimek, díky čemuž je bezpečnější.
    Robustní:Java je silný programovací jazyk, protože používá silnou správu paměti. Koncepty jako automatický sběr odpadu, zpracování výjimek atd. jej činí robustnějším.
    Neutrální architektura:Java je architektonicky neutrální, protože není závislá na architektuře. V C se velikost datových typů může lišit podle architektury (32bitové nebo 64bitové), která v Javě neexistuje.
    tlumočeno:Java používá ke spouštění programu interpret Just-in-time (JIT) spolu s kompilátorem.
    Vysoký výkon:Java je rychlejší než jiné tradiční interpretované programovací jazyky, protože bytecode Java je „blízko“ nativnímu kódu. Je stále o něco pomalejší než kompilovaný jazyk (např. C++).
    Vícevláknové:Můžeme psát Java programy, které se zabývají mnoha úkoly najednou definováním více vláken. Hlavní výhodou multi-threadingu je, že nezabírá paměť pro každé vlákno. Sdílí společnou paměťovou oblast. Vlákna jsou důležitá pro multimédia, webové aplikace atd.
    Distribuováno:Java je distribuována, protože uživatelům usnadňuje vytváření distribuovaných aplikací v Javě. RMI a EJB se používají pro vytváření distribuovaných aplikací. Tato funkce Java nám umožňuje přistupovat k souborům voláním metod z libovolného počítače na internetu.
    Dynamický:Java je dynamický jazyk. Podporuje dynamické načítání tříd. To znamená, že třídy jsou načteny na vyžádání. Podporuje také funkce ze svých rodných jazyků, tedy C a C++.

4) Co rozumíte pod pojmem Java virtual machine?

Java virtuální stroj je virtuální stroj, který umožňuje počítači spouštět program Java. JVM funguje jako run-time engine, který volá hlavní metodu přítomnou v kódu Java. JVM je specifikace, která musí být implementována v počítačovém systému. Java kód je kompilován JVM jako Bytecode, který je nezávislý na počítači a je blízký nativnímu kódu.


5) Jaký je rozdíl mezi JDK, JRE a JVM?

JVM

JVM je zkratka pro Java Virtual Machine; je to abstraktní stroj, který poskytuje běhové prostředí, ve kterém lze spustit bytecode Java. Je to specifikace, která specifikuje fungování Java Virtual Machine. Jeho implementaci zajistila společnost Oracle a další společnosti. Jeho implementace je známá jako JRE.

JVM jsou k dispozici pro mnoho hardwarových a softwarových platforem (takže JVM je závislé na platformě). Je to runtime instance, která se vytvoří, když spustíme třídu Java. Existují tři pojmy JVM: specifikace, implementace a instance.

JRE

JRE je zkratka pro Java Runtime Environment. Jedná se o implementaci JVM. Java Runtime Environment je sada softwarových nástrojů, které se používají pro vývoj Java aplikací. Používá se k poskytování běhového prostředí. Jedná se o implementaci JVM. Fyzicky existuje. Obsahuje sadu knihoven + další soubory, které JVM používá za běhu.

JDK

JDK je zkratka pro Java Development Kit. Jedná se o softwarové vývojové prostředí, které se používá k vývoji Java aplikací a appletů. Fyzicky existuje. Obsahuje JRE + vývojové nástroje. JDK je implementace kterékoli z níže uvedených platforem Java vydaných společností Oracle Corporation:

  • Platforma Java Standard Edition
  • Platforma Java Enterprise Edition
  • Platforma Java Micro Edition
Více informací.

6) Kolik typů paměťových oblastí přiděluje JVM?

Mnoho typů:

    Oblast třídy (metody):Oblast třídy ukládá struktury pro jednotlivé třídy, jako je fond konstant za běhu, pole, data metod a kód pro metody.Halda:Je to oblast runtime dat, ve které je paměť alokována objektůmZásobník:Java Stack ukládá snímky. Obsahuje lokální proměnné a dílčí výsledky a hraje roli při vyvolání a návratu metody. Každé vlákno má soukromý zásobník JVM vytvořený současně s vláknom. Při každém vyvolání metody se vytvoří nový rámec. Rámec je zničen po dokončení vyvolání jeho metody.Registr programového pultu:Registr PC (program counter) obsahuje adresu aktuálně prováděné instrukce virtuálního stroje Java.Zásobník nativních metod:Obsahuje všechny nativní metody používané v aplikaci.
Více informací.

7) Co je kompilátor JIT?

Kompilátor Just-In-Time (JIT): Používá se ke zlepšení výkonu. JIT kompiluje části bajtového kódu, které mají podobnou funkci ve stejnou dobu, a tím snižuje množství času potřebného pro kompilaci. Zde termín kompilátor označuje překladač z instrukční sady virtuálního stroje Java (JVM) do instrukční sady konkrétního CPU.


8) Jaká je platforma?

Platforma je hardwarové nebo softwarové prostředí, ve kterém se spouští určitý software. Existují dva typy platforem, softwarová a hardwarová. Java poskytuje softwarovou platformu.


9) Jaké jsou hlavní rozdíly mezi platformou Java a ostatními platformami?

Mezi platformou Java a ostatními platformami jsou následující rozdíly.

  • Java je platforma založená na softwaru, zatímco jiné platformy mohou být hardwarové platformy nebo platformy založené na softwaru.
  • Java se spouští nad ostatními hardwarovými platformami, zatímco jiné platformy mohou mít pouze hardwarové komponenty.

10) Co dává Javě její povahu „zapiš jednou a spusť kdekoli“?

Bytový kód. Kompilátor Java převádí programy Java do souboru třídy (Byte Code), což je prostřední jazyk mezi zdrojovým kódem a strojovým kódem. Tento bajtkód není specifický pro platformu a lze jej spustit na jakémkoli počítači.


11) Co je classloader?

Classloader je subsystém JVM, který se používá k načítání souborů tříd. Kdykoli spustíme java program, je nejprve načten classloaderem. V Javě jsou tři vestavěné classloadery.

    Bootstrap ClassLoader: Toto je první classloader, který je nadtřídou Extension classloader. Načte se rt.jar soubor, který obsahuje všechny soubory tříd Java Standard Edition, jako jsou třídy balíčků java.lang, třídy balíčků java.net, třídy balíčků java.util, třídy balíčků java.io, třídy balíčků java.sql atd.Rozšíření ClassLoader: Toto je podřízený classloader Bootstrapu a nadřazený classloader System classloader. Načte soubory jar umístěné uvnitř $JAVA_HOME/jre/lib/ext adresář.Systém/aplikace ClassLoader: Toto je podřízený classloader Extension classloader. Načte soubory třídy z cesty ke třídě. Ve výchozím nastavení je cesta ke třídě nastavena na aktuální adresář. Cestu třídy můžete změnit pomocí přepínače „-cp“ nebo „-classpath“. Je také známý jako Application classloader.

12) Je prázdný název souboru .java platný název zdrojového souboru?

Ano, Java umožňuje uložit náš java soubor .Jáva pouze jej musíme zkompilovat javac .java a proběhnout název třídy java Vezměme si jednoduchý příklad:

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

zkompilovat to podle javac .java

spustit to java A


13) Je v jazyce Java klíčové slovo delete, next, main, exit nebo null?

Ne.


14) Pokud na příkazovém řádku neposkytnu žádné argumenty, jaká hodnota uložená v poli String bude předána do metody main(), prázdná nebo NULL?

Je prázdný, ale ne nulový.


15) Co když napíšu static public void místo public static void?

Program se zkompiluje a běží správně, protože na pořadí specifikátorů v Javě nezáleží.


16) Jaká je výchozí hodnota lokálních proměnných?

Lokální proměnné nejsou inicializovány na žádnou výchozí hodnotu, ani primitiva ani odkazy na objekty.


17) Jaké jsou různé specifikátory přístupu v Javě?

V Javě jsou specifikátory přístupu klíčová slova, která se používají k definování rozsahu přístupu metody, třídy nebo proměnné. V Javě jsou níže uvedeny čtyři specifikátory přístupu.

    VeřejnostKe třídám, metodám nebo proměnným, které jsou definovány jako veřejné, lze přistupovat jakoukoli třídou nebo metodou.ChráněnýK chráněnému lze přistupovat třídou stejného balíčku nebo podtřídou této třídy nebo v rámci stejné třídy.VýchozíVýchozí jsou dostupné pouze v rámci balíčku. Ve výchozím nastavení mají všechny třídy, metody a proměnné výchozí rozsah.SoukroméSoukromá třída, metody nebo proměnné definované jako soukromé jsou přístupné pouze v rámci třídy.

18) K čemu slouží statické metody a proměnné?

Metody nebo proměnné definované jako statické jsou sdíleny mezi všemi objekty třídy. Statika je součástí třídy a ne objektu. Statické proměnné jsou uloženy v oblasti třídy a pro přístup k těmto proměnným nemusíme vytvářet objekt. Proto se static používá v případě, kdy potřebujeme definovat proměnné nebo metody, které jsou společné všem objektům třídy.

Například ve třídě simulující shromáždění studentů na vysoké škole je název školy společným atributem pro všechny studenty. Proto bude název vysoké školy definován jako statický .


19) Jaké jsou výhody balíčků v Javě?

Definování balíčků v Javě má ​​různé výhody.

  • Balíčky se vyhýbají střetům jmen.
  • Balíček poskytuje snadnější kontrolu přístupu.
  • Můžeme mít také skryté třídy, které nejsou viditelné zvenčí a používá je balíček.
  • Je snazší najít související třídy.

20) Jaký je výstup následujícího programu Java?

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

Výstupem výše uvedeného kódu bude

 30Javatpoint Javatpoint1020 

Vysvětlení

V prvním případě jsou 10 a 20 považovány za čísla a sečteny jako 30. Nyní je jejich součet 30 považován za řetězec a zřetězen s řetězcem Javatpoint . Výstup tedy bude 30Javatpoint .

Ve druhém případě je řetězec Javatpoint zřetězen s 10, aby byl řetězcem Javatpoint10 který pak bude zřetězen s 20 být Javatpoint1020 .


21) Jaký je výstup následujícího programu Java?

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

Výstupem výše uvedeného kódu bude

 200Javatpoint Javatpoint200 

Vysvětlení

V prvním případě budou čísla 10 a 20 nejprve vynásobena a poté bude výsledek 200 považován za řetězec a zřetězen s řetězcem. Javatpoint k výrobě výstupu 200Javatpoint .

Ve druhém případě budou čísla 10 a 20 vynásobena nejprve 200, protože priorita násobení je vyšší než sčítání. Výsledek 200 bude považován za řetězec a zřetězen s řetězcem Javatpoint produkovat výstup jako Javatpoint200 .


22) Jaký je výstup následujícího programu Java?

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

Výše uvedený kód poskytne chybu při kompilaci, protože cyklus for vyžaduje ve druhé části booleovskou hodnotu a my poskytujeme celočíselnou hodnotu, tj. 0.


Core Java - OOPs Concepts: Úvodní OOPs Interview Questions

Existuje více než 50 otázek k pohovoru OOP (Object-Oriented Programming and System). Pro lepší pochopení však byly rozděleny do mnoha sekcí, jako jsou otázky rozhovoru s konstruktérem, otázky statického rozhovoru, otázky dědičného rozhovoru, otázka rozhovoru abstrakce, otázky rozhovoru s polymorfismem atd.


23) Co je objektově orientované paradigma?

Je to programovací paradigma založené na objektech, které mají data a metody definované ve třídě, do které patří. Objektově orientované paradigma si klade za cíl začlenit výhody modularity a opětovné použitelnosti. Objekty jsou instance tříd, které se vzájemně ovlivňují při navrhování aplikací a programů. Objektově orientované paradigma má následující rysy.

  • Při návrhu programu se řídí přístupem zdola nahoru.
  • Zaměřte se na data pomocí metod, jak pracovat s daty objektu
  • Zahrnuje koncepty jako zapouzdření a abstrakce, které před uživatelem skrývají složitosti a zobrazují pouze funkce.
  • Implementuje přístup v reálném čase, jako je dědění, abstrakce atd.
  • Příklady objektově orientovaného paradigmatu jsou C++, Simula, Smalltalk, Python, C# atd.

24) Co je to předmět?

Objekt je entita v reálném čase, která má nějaký stav a chování. V Javě je Object instancí třídy, která má proměnné instance jako stav objektu a metody jako chování objektu. Objekt třídy lze vytvořit pomocí Nový klíčové slovo.


25) Jaký je rozdíl mezi objektově orientovaným programovacím jazykem a objektově orientovaným programovacím jazykem?

Mezi objektově orientovaným jazykem a objektově orientovaným jazykem existují následující základní rozdíly.

  • Objektově orientované jazyky se řídí všemi koncepty OOP, zatímco objektově založený jazyk se neřídí všemi koncepty OOP, jako je dědičnost a polymorfismus.
  • Objektově orientované jazyky nemají vestavěné objekty, zatímco objektově založené jazyky mají vestavěné objekty, například JavaScript má objekt okna.
  • Příklady objektově orientovaného programování jsou Java, C#, Smalltalk atd., zatímco příklady objektově orientovaných jazyků jsou JavaScript, VBScript atd.

26) Jaká bude počáteční hodnota odkazu na objekt, který je definován jako proměnná instance?

Všechny odkazy na objekty jsou v Javě inicializovány na hodnotu null.


Core Java - OOPs Concepts: Constructor Interview Questions


27) Co je to konstruktér?

Konstruktor lze definovat jako speciální typ metody, která se používá k inicializaci stavu objektu. Vyvolá se, když je třída konkretizována a paměť je alokována pro objekt. Pokaždé je objekt vytvořen pomocí Nový klíčové slovo, je volán výchozí konstruktor třídy. Název konstruktoru musí být podobný názvu třídy. Konstruktor nesmí mít explicitní návratový typ.

Více informací.

28) Kolik typů konstruktorů se používá v Javě?

Na základě parametrů předávaných v konstruktorech existují v Javě dva typy konstruktorů.

    Výchozí konstruktor:výchozí konstruktor je ten, který nepřijímá žádnou hodnotu. Výchozí konstruktor se používá hlavně k inicializaci proměnné instance s výchozími hodnotami. Může být také použit pro provádění některých užitečných úkolů při vytváření objektů. Pokud ve třídě není definován žádný konstruktor, je kompilátorem implicitně vyvolán výchozí konstruktor.Parametrizovaný konstruktor:Parametrizovaný konstruktor je ten, který dokáže inicializovat proměnné instance s danými hodnotami. Jinými slovy, můžeme říci, že konstruktory, které mohou přijmout argumenty, se nazývají parametrizované konstruktory.
Konstruktory Java

29) Jaký je účel výchozího konstruktoru?

Účelem výchozího konstruktoru je přiřadit výchozí hodnotu objektům. Kompilátor java vytvoří výchozí konstruktor implicitně, pokud ve třídě není žádný konstruktor.

 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(); } } 
Otestujte to hned

Výstup:

 0 null 0 null 

Vysvětlení: Ve výše uvedené třídě nevytváříte žádný konstruktor, takže kompilátor vám poskytuje výchozí konstruktor. Výchozí konstruktor zde poskytuje hodnoty 0 a null.

Výchozí konstruktor Java
Více informací.

30) Vrátí konstruktor nějakou hodnotu?

roky: ano, konstruktor implicitně vrací aktuální instanci třídy (s konstruktorem nelze použít explicitní návratový typ). Více informací.


31) Je konstruktor zděděn?

Ne, konstruktor není zděděn.


32) Dokážete udělat konstruktér finále?

Ne, konstruktor nemůže být konečný.

kolik měst je ve Spojených státech amerických

33) Můžeme přetížit konstruktory?

Ano, konstruktory mohou být přetíženy změnou počtu argumentů akceptovaných konstruktorem nebo změnou datového typu parametrů. Zvažte následující příklad.

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

Ve výše uvedeném programu je konstruktor Test přetížen jiným konstruktorem. Při prvním volání konstruktoru se zavolá konstruktor s jedním argumentem a i bude inicializováno hodnotou 10. Při druhém volání konstruktoru se však zavolá konstruktor se 2 argumenty a bude inicializováno i s hodnotou 15.


34) Co rozumíte pod pojmem kopírovací konstruktor v Javě?

V Javě není žádný kopírovací konstruktor. Můžeme však kopírovat hodnoty z jednoho objektu do druhého jako kopírovací konstruktor v C++.

Existuje mnoho způsobů, jak zkopírovat hodnoty jednoho objektu do jiného v jazyce Java. Oni jsou:

  • Podle konstruktéra
  • Přiřazením hodnot jednoho objektu druhému
  • Metodou clone() třídy Object

V tomto příkladu zkopírujeme hodnoty jednoho objektu do jiného pomocí java konstruktoru.

 //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(); } } 
Otestujte to hned

Výstup:

 111 Karan 111 Karan 

35) Jaké jsou rozdíly mezi konstruktory a metodami?

Mezi konstruktory a metodami je mnoho rozdílů. Jsou uvedeny níže.

Java konstruktorJava metoda
K inicializaci stavu objektu se používá konstruktor.Metoda se používá k odhalení chování objektu.
Konstruktor nesmí mít návratový typ.Metoda musí mít návratový typ.
Konstruktor je vyvolán implicitně.Metoda je vyvolána explicitně.
Kompilátor Java poskytuje výchozí konstruktor, pokud ve třídě nemáte žádný konstruktor.Metodu v žádném případě neposkytuje kompilátor.
Název konstruktoru musí být stejný jako název třídy.Název metody může nebo nemusí být stejný jako název třídy.

Java konstruktory vs metody

36) Jaký je výstup následujícího programu 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); } } 

Výstupem následujícího programu je:

 a = 10 b = 15 

Zde se datový typ proměnných a a b, tj. byte, povýší na int a zavolá se první parametrizovaný konstruktor se dvěma celočíselnými parametry.


37) Jaký je výstup následujícího programu Java?

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

Výstup programu je 0, protože proměnná i je interně inicializována na 0. Jak víme, že výchozí konstruktor je vyvolán implicitně, pokud ve třídě není žádný konstruktor, proměnná i je inicializována na 0, protože ve třídě není žádný konstruktor.


38) Jaký je výstup následujícího programu 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); } } 

Tady je chyba kompilátoru v programu, protože v hlavní metodě existuje volání výchozího konstruktoru, který není ve třídě přítomen. Ve třídě Test je však pouze jeden parametrizovaný konstruktor. Proto konstruktor implicitně nevyvolá žádný výchozí konstruktor.


Core Java - OOPs Concepts: statické klíčové slovo Interview Questions


39) Co je to statická proměnná?

Statická proměnná se používá k odkazování na společnou vlastnost všech objektů (která není pro každý objekt jedinečná), např. název společnosti zaměstnanců, jména studentů na vysoké škole atd. Statická proměnná získá paměť pouze jednou v oblasti třídy na adrese čas načítání třídy. Použití statické proměnné zvyšuje efektivitu paměti (šetří paměť). Statická proměnná patří spíše do třídy než do objektu.

 //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(); } } 
Otestujte to hned
 Output:111 Karan ITS 222 Aryan ITS 

Více informací.

40) Co je to statická metoda?

  • Statická metoda patří spíše do třídy než do objektu.
  • Není potřeba vytvářet objekt pro volání statických metod.
  • Statická metoda může přistupovat a měnit hodnotu statické proměnné.
Více informací.

41) Jaká jsou omezení, která se vztahují na statické metody Java?

Na statické metody se vztahují dvě hlavní omezení.

  • Statická metoda nemůže používat nestatický datový člen nebo přímo volat nestatickou metodu.
  • this a super nelze použít ve statickém kontextu, protože nejsou statické.

42) Proč je hlavní metoda statická?

Protože objekt není povinen volat statickou metodu. Pokud uděláme hlavní metodu nestatickou, JVM bude muset nejprve vytvořit svůj objekt a poté zavolat metodu main(), která povede k přidělení paměti navíc. Více informací.


43) Můžeme přepsat statické metody?

Ne, nemůžeme přepsat statické metody.

44) Co je to statický blok?

Statický blok se používá k inicializaci statického datového členu. Provádí se před hlavní metodou v době načítání třídy.

 class A2{ static{System.out.println('static block is invoked');} public static void main(String args[]){ System.out.println('Hello main'); } } 
Otestujte to hned
 Output: static block is invoked Hello main 

Více informací.

45) Můžeme spustit program bez metody main()?

Odpověď) Ne, před JDK 1.7 to bylo možné pomocí statického bloku. Od JDK 1.7 to není možné. Více informací.


46) Co když je z podpisu hlavní metody odstraněn statický modifikátor?

Program se zkompiluje. Za běhu však vyvolá chybu 'NoSuchMethodError.'


47) Jaký je rozdíl mezi statickou (třídní) metodou a instanční metodou?

statická nebo třídní metodainstanční metoda
1)Metoda, která je deklarována jako statická, se nazývá statická metoda.Metoda, která není deklarována jako statická, se nazývá metoda instance.
2) K volání statických metod nepotřebujeme vytvářet objekty.Objekt je vyžadován k volání metod instance.
3)Nestatické (instance) členy nelze přistupovat přímo ve statickém kontextu (statická metoda, statický blok a statická vnořená třída).Ke statickým i nestatickým proměnným lze přistupovat v metodách instance.
4)Například: public static int cube(int n){ return n*n*n;}Například: public void msg(){...}.

48) Můžeme udělat konstruktory statické?

Jak víme, statický kontext (metoda, blok nebo proměnná) patří do třídy, nikoli do objektu. Vzhledem k tomu, že konstruktory se vyvolávají pouze při vytvoření objektu, nemá smysl vytvářet statické konstruktory. Pokud se však o to pokusíte, kompilátor zobrazí chybu kompilátoru.


49) Můžeme v Javě učinit abstraktní metody statické?

Pokud v Javě uděláme abstraktní metody statické, stane se součástí třídy a můžeme ji přímo volat, což je zbytečné. Volání nedefinované metody je zcela zbytečné, proto není povoleno.


50) Můžeme deklarovat statické proměnné a metody v abstraktní třídě?

Ano, můžeme deklarovat statické proměnné a metody v abstraktní metodě. Protože víme, že neexistuje žádný požadavek, aby objekt přistupoval ke statickému kontextu, můžeme tedy přistupovat ke statickému kontextu deklarovanému uvnitř abstraktní třídy pomocí názvu abstraktní třídy. Zvažte následující příklad.

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

Výstup

 hi !! I am good !! i = 102 

Core Java - OOPs Concepts: Dědičné pohovorové otázky


51) Co je tento klíčové slovo v Javě?

The tento klíčové slovo je referenční proměnná, která odkazuje na aktuální objekt. V Javě existují různá použití tohoto klíčového slova. Může být použit k odkazování na aktuální vlastnosti třídy, jako jsou metody instance, proměnné, konstruktory atd. Může být také předán jako argument do metod nebo konstruktorů. Může být také vrácen z metody jako aktuální instance třídy.

java toto klíčové slovo
Více informací.

52) Jaká jsou hlavní použití tohoto klíčového slova?

Existují následující použití tento klíčové slovo.

    tentolze použít k odkazování na aktuální proměnnou instance třídy.tentolze použít k vyvolání aktuální metody třídy (implicitně)tento()lze použít k vyvolání konstruktoru aktuální třídy.tentolze předat jako argument při volání metody.tentolze předat jako argument ve volání konstruktoru.tentolze použít k vrácení aktuální instance třídy z metody.

53) Můžeme přiřadit odkaz na tento variabilní?

Ne, toto nelze přiřadit žádné hodnotě, protože vždy ukazuje na aktuální objekt třídy a to je konečná reference v Javě. Pokud se o to však pokusíme, zobrazí se chyba kompilátoru. Zvažte následující příklad.

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

Výstup

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

54) Může tento klíčové slovo použít k odkazování na statické členy?

Ano, toto klíčové slovo je možné použít k odkazování na statické členy, protože se jedná pouze o referenční proměnnou, která odkazuje na aktuální objekt třídy. Jak však víme, není nutné přistupovat ke statickým proměnným prostřednictvím objektů, a proto není nejlepší postup používat k odkazování na statické členy. Zvažte následující příklad.

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

Výstup

 10 

55) Jak lze pomocí tohoto klíčového slova provést řetězení konstruktoru?

Řetězení konstruktorů nám umožňuje volat jeden konstruktor z jiného konstruktoru třídy s ohledem na aktuální objekt třídy. Toto klíčové slovo můžeme použít k provedení řetězení konstruktoru v rámci stejné třídy. Zvažte následující příklad, který ilustruje, jak můžeme toto klíčové slovo použít k dosažení řetězení konstruktoru.

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

Výstup

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

56) Jaké jsou výhody předání tohoto do metody namísto samotného objektu aktuální třídy?

Jak víme, že to odkazuje na aktuální objekt třídy, proto musí být podobný objektu aktuální třídy. Předání toho do metody místo do aktuálního objektu třídy však může mít dvě hlavní výhody.

  • toto je konečná proměnná. Tudíž to nelze přiřadit žádné nové hodnotě, zatímco aktuální objekt třídy nemusí být konečný a lze jej změnit.
  • to lze použít v synchronizovaném bloku.

57) Co je to dědictví?

Dědičnost je mechanismus, kterým jeden objekt získává všechny vlastnosti a chování jiného objektu jiné třídy. Používá se pro opětovné použití kódu a přepisování metod. Myšlenkou dědičnosti v Javě je, že můžete vytvářet nové třídy, které jsou postaveny na existujících třídách. Když dědíte z existující třídy, můžete znovu použít metody a pole nadřazené třídy. Navíc můžete přidat nové metody a pole do vaší aktuální třídy. Dědičnost představuje vztah IS-A, který je také známý jako vztah rodič-dítě.

V Javě existuje pět typů dědičnosti.

  • Jednoúrovňová dědičnost
  • Víceúrovňová dědičnost
  • Vícenásobná dědičnost
  • Hierarchická dědičnost
  • Hybridní dědičnost

Vícenásobná dědičnost není v Javě podporována prostřednictvím třídy.

Více informací.

58) Proč se v Javě používá dědičnost?

Použití dědičnosti v Javě má ​​různé výhody, které jsou uvedeny níže.

  • Dědičnost zajišťuje opětovné použití kódu. Odvozená třída nemusí předefinovat metodu základní třídy, pokud nepotřebuje poskytovat konkrétní implementaci metody.
  • Runtime polymorfismu nelze dosáhnout bez použití dědičnosti.
  • Můžeme simulovat dědičnost tříd s objekty v reálném čase, což činí OOP realističtější.
  • Dědičnost umožňuje skrytí dat. Základní třída může skrýt některá data z odvozené třídy tím, že ji učiní soukromou.
  • Přepsání metody nelze dosáhnout bez dědičnosti. Přepsáním metody můžeme dát konkrétní implementaci některé základní metody obsažené v základní třídě.

59) Která třída je nadtřídou pro všechny třídy?

Třída objektu je nadtřídou všech ostatních tříd v Javě.


60) Proč není v Javě podporováno vícenásobné dědění?

Kvůli snížení složitosti a zjednodušení jazyka není v jazyce Java podporována vícenásobná dědičnost. Zvažte scénář, kde A, B a C jsou tři třídy. Třída C dědí třídy A a B. Pokud třídy A a B mají stejnou metodu a voláte ji z podřízeného objektu třídy, bude volání metody třídy A nebo B nejednoznačné.

Protože chyby v době kompilace jsou lepší než chyby za běhu, Java vykreslí chybu v době kompilace, pokud zdědíte 2 třídy. Takže ať už máte stejnou nebo jinou metodu, dojde k chybě při kompilaci.

 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? } } 
Otestujte to hned
 Compile Time Error 

61) Co je to agregace?

Agregaci lze definovat jako vztah mezi dvěma třídami, kde agregovaná třída obsahuje odkaz na třídu, kterou vlastní. Agregaci lze nejlépe popsat jako a vztah. Například souhrnná třída Zaměstnanec s různými poli, jako je věk, jméno a plat, také obsahuje objekt třídy Adresa s různými poli, jako je 1. řádek adresy, město, stát a kód PIN. Jinými slovy, můžeme říci, že zaměstnanec (třída) má objekt třídy Address. Zvažte následující příklad.

Adresa.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; } } 

Employee.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(); } } 

Výstup

 111 varun gzb UP india 112 arun gno UP india 

62) Co je složení?

Držení odkazu na třídu v nějaké jiné třídě je známé jako kompozice. Když objekt obsahuje druhý objekt, pokud obsažený objekt nemůže existovat bez existence kontejnerového objektu, pak se nazývá kompozice. Jinými slovy, můžeme říci, že kompozice je konkrétní případ agregace, která představuje silnější vztah mezi dvěma objekty. Příklad: Třída obsahuje studenty. Student nemůže existovat bez třídy. Mezi třídou a studenty existuje složení.


63) Jaký je rozdíl mezi agregací a kompozicí?

Agregace představuje slabý vztah, zatímco složení představuje silný vztah. Kolo má například ukazatel (agregace), ale kolo má motor (složení).


64) Proč Java nepodporuje ukazatele?

Ukazatel je proměnná, která odkazuje na adresu paměti. V Javě se nepoužívají, protože jsou nebezpečné (nezabezpečené) a složité na pochopení.


65) Co je super v Javě?

The super klíčové slovo v Javě je referenční proměnná, která se používá k odkazování na bezprostřední nadřazený objekt třídy. Kdykoli vytvoříte instanci podtřídy, implicitně se vytvoří instance nadřazené třídy, na kterou odkazuje superreferenční proměnná. Funkce super() je volána v konstruktoru třídy implicitně kompilátorem, pokud neexistuje super nebo toto.

 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(); } } 
Otestujte to hned

Výstup:

 animal is created dog is created 
Více informací.

66) Jak lze provést řetězení konstruktoru pomocí klíčového slova 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); } } 

Výstup

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

67) Jaká jsou hlavní použití klíčového slova super?

Existují následující použití super klíčového slova.

  • super lze použít k odkazování na bezprostřední nadřazenou proměnnou instance třídy.
  • super lze použít k vyvolání metody bezprostřední rodičovské třídy.
  • super() lze použít k vyvolání konstruktoru bezprostřední rodičovské třídy.

68) Jaké jsou rozdíly mezi tímto a super klíčovým slovem?

Mezi tímto a super klíčovým slovem jsou následující rozdíly.

  • Klíčové slovo super vždy ukazuje na kontext nadřazené třídy, zatímco toto klíčové slovo vždy ukazuje na kontext aktuální třídy.
  • Klíčové slovo super se primárně používá k inicializaci proměnných základní třídy v konstruktoru odvozené třídy, zatímco toto klíčové slovo se primárně používá k rozlišení mezi lokálními a instančními proměnnými, když je předáváno konstruktorem třídy.
  • Super a toto musí být první příkaz uvnitř konstruktoru, jinak kompilátor vyvolá chybu.

69) Jaký je výstup následujícího programu 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(); } } 

Výstup

 Person class constructor called Employee class constructor called 

Vysvětlení

Funkce super() je implicitně vyvolána kompilátorem, pokud není v konstruktoru odvozené třídy explicitně zahrnuta žádná super() nebo this(). Proto se v tomto případě nejprve zavolá konstruktor třídy Osoba a poté se zavolá konstruktor třídy Zaměstnanec.


70) Můžete použít this() a super() v konstruktoru?

Ne, protože this() a super() musí být první příkaz v konstruktoru třídy.

Příklad:

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

Výstup:

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

71)Co je klonování objektů?

Klonování objektu se používá k vytvoření přesné kopie objektu. Ke klonování objektu se používá metoda clone() třídy Object. The java.lang.Klonovatelný rozhraní musí být implementováno třídou, jejíž objektový klon chceme vytvořit. Pokud neimplementujeme rozhraní Cloneable, metoda clone() vygeneruje CloneNotSupportedException.

 protected Object clone() throws CloneNotSupportedException 
Více informací.

Core Java - OOPs Concepts: Method Overloading Interview Questions


72) Co je přetížení metody?

Přetěžování metod je technika polymorfismu, která nám umožňuje vytvářet více metod se stejným názvem, ale odlišným podpisem. Přetížení metody můžeme dosáhnout dvěma způsoby.

  • Změnou počtu argumentů
  • Změnou datového typu argumentů

Přetížení metody zvyšuje čitelnost programu. Pro rychlé zjištění programu se provádí přetížení metody.

Více informací.

73) Proč není možné přetížení metody změnou návratového typu v jazyce Java?

V Javě není možné přetížení metody změnou návratového typu programu, aby se předešlo nejednoznačnosti.

 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 }} 
Otestujte to hned

Výstup:

 Compile Time Error: method add(int, int) is already defined in class Adder 
Více informací.

74) Můžeme přetížit metody tím, že je uděláme statické?

Ne, nemůžeme přetížit metody pouhým použitím klíčového slova static (počet parametrů a typů je stejný). Zvažte následující příklad.

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

Výstup

 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) Můžeme přetížit metodu main()?

Ano, pomocí přetížení metod můžeme mít v programu Java libovolný počet hlavních metod.

Více informací.

76) Co je přetěžování metody propagací typu?

Povýšením typu je přetížení metody, máme na mysli, že jeden datový typ může být povýšen na jiný implicitně, pokud není nalezena přesná shoda.

Přetížení metody Java s podporou typu

Jak je znázorněno na výše uvedeném diagramu, bajt může být povýšen na short, int, long, float nebo double. Datový typ short lze povýšit na int, long, float nebo double. Datový typ char lze povýšit na int, long, float nebo double a tak dále. Zvažte následující příklad.

 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); } } 
Otestujte to hned

Výstup

 40 60 

77) Jaký je výstup následujícího programu 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 } } 

Výstup

 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 

Vysvětlení

Existují dvě metody definované se stejným názvem, tj. První metoda přijímá typ integer a long, zatímco druhá metoda přijímá typ long a integer. Předaný parametr, který je a = 20, b = 20. Nemůžeme říci, která metoda bude volána, protože neexistuje jasné rozlišení mezi celočíselným literálem a dlouhým literálem. To je případ nejednoznačnosti. Proto kompilátor vyvolá chybu.


Core Java - OOPs Concepts: Method Overriding Interview Questions


78) Co je to přepisování metody:

Pokud podtřída poskytuje specifickou implementaci metody, která je již poskytována její nadřazenou třídou, nazývá se přepisování metody. Používá se pro běhový polymorfismus a implementaci metod rozhraní.

Pravidla pro přepisování metod

  • Metoda musí mít stejný název jako v nadřazené třídě.
  • Metoda musí mít stejný podpis jako v nadřazené třídě.
  • Dvě třídy musí mít mezi sebou vztah IS-A.
Více informací.


79) Můžeme přepsat statickou metodu?

Ne, statickou metodu nemůžete přepsat, protože jsou součástí třídy, nikoli objektu.


80) Proč nemůžeme přepsat statickou metodu?

Je to proto, že statická metoda je součástí třídy a je vázána na třídu, zatímco metoda instance je vázána na objekt a statická získává paměť v oblasti třídy a instance získává paměť na hromadě.


81) Můžeme přetíženou metodu přepsat?

Ano.


82) Rozdíl mezi metodou Overloading a Overriding.

Přetížení metodyPřepsání metody
1) Přetížení metody zvyšuje čitelnost programu.Přepsání metody poskytuje specifickou implementaci metody, která je již poskytována její nadtřídou.
2) V rámci třídy dochází k přetížení metody.K přepsání metody dochází ve dvou třídách, které mají mezi sebou vztah IS-A.
3) V tomto případě musí být parametry odlišné.V tomto případě musí být parametry stejné.

83) Můžeme přepsat soukromé metody?

Ne, soukromé metody nemůžeme přepsat, protože rozsah soukromých metod je omezen na třídu a nemůžeme k nim přistupovat mimo třídu.


84) Můžeme změnit rozsah přepsané metody v podtřídě?

Ano, můžeme změnit rozsah přepsané metody v podtřídě. Musíme si však všimnout, že nemůžeme snížit dostupnost metody. Při změně přístupnosti metody je třeba dbát na následující bod.

  • Soukromé lze změnit na chráněné, veřejné nebo výchozí.
  • Chráněné lze změnit na veřejné nebo výchozí.
  • Výchozí lze změnit na veřejné.
  • Veřejnost vždy zůstane veřejnou.

85) Můžeme upravit klauzuli throws metody nadtřídy a zároveň ji přepsat v podtřídě?

Ano, můžeme upravit klauzuli throws metody nadtřídy a zároveň ji přepsat v podtřídě. Existují však některá pravidla, která je třeba dodržovat při přepisování v případě zpracování výjimek.

  • Pokud metoda nadtřídy nedeklaruje výjimku, metoda přepsání podtřídou nemůže deklarovat kontrolovanou výjimku, ale může deklarovat nekontrolovanou výjimku.
  • Pokud metoda nadtřídy deklaruje výjimku, metoda přepisovaná podtřídou může deklarovat totéž, výjimku podtřídy nebo žádnou výjimku, ale nemůže deklarovat nadřazenou výjimku.

86) Jaký je výstup následujícího programu 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); } } 

Výstup

 Base class method called with integer a = 10 

Vysvětlení

Method() je přetížená ve třídě Base, zatímco je odvozena ve třídě Derived s typem double jako parametrem. Při volání metody je předáno celé číslo.

87) Můžete mít virtuální funkce v Javě?

Ano, všechny funkce v Javě jsou ve výchozím nastavení virtuální.


88) Co je kovariantní návratový typ?

Nyní, od java5, je možné přepsat libovolnou metodu změnou návratového typu, pokud je návratovým typem metody přepisování podtřídy typ podtřídy. Je známý jako kovariantní návratový typ. Návratový typ kovariance určuje, že návratový typ se může lišit ve stejném směru jako podtřída.

 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(); } } 
Otestujte to hned
 Output: welcome to covariant return type 
Více informací.

89) Jaký je výstup následujícího programu 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(); } } 

Výstup

 Derived method called ... 

Vysvětlení

Metoda třídy Base, tj. metoda baseMethod() je v odvozené třídě přepsána. Ve třídě Test odkazuje referenční proměnná b (typu Base class) na instanci třídy Derived. Zde je dosaženo Runtime polymorfismu mezi třídou Base a Derived. V době kompilace je přítomnost metody baseMethod zkontrolována ve třídě Base. Pokud je přítomnost, pak se program zkompiloval, jinak se zobrazí chyba kompilátoru. V tomto případě je baseMethod přítomna ve třídě Base; proto je úspěšně zkompilován. Za běhu však zkontroluje, zda byla základní metoda přepsána třídou Derived, pokud ano, pak se zavolá metoda třídy Derived, jinak se zavolá metoda třídy Base. V tomto případě třída Derived přepíše baseMethod; proto je volána metoda třídy Derived.


Core Java - OOPs Concepts: finální klíčové slovo Interview Questions


90) Jaká je konečná proměnná?

V Javě se poslední proměnná používá k omezení uživatele v její aktualizaci. Pokud inicializujeme konečnou proměnnou, nemůžeme změnit její hodnotu. Jinými slovy, můžeme říci, že konečná proměnná jednou přiřazená k hodnotě již nemůže být poté změněna. Finální proměnnou, která není přiřazena k žádné hodnotě, lze přiřadit pouze prostřednictvím konstruktoru třídy.

konečné klíčové slovo v jazyce 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 
Otestujte to hned
 Output:Compile Time Error 
Více informací.

91) Jaká je konečná metoda?

Pokud změníme jakoukoli metodu na konečnou metodu, nemůžeme ji přepsat. Více informací.

 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(); } } 
Otestujte to hned
 Output:Compile Time Error 

92) Jaká je závěrečná třída?

Pokud uděláme z jakékoli třídy konečnou, nemůžeme ji zdědit do žádné z podtříd.

 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(); } } 
Otestujte to hned
 Output:Compile Time Error 
Více informací.

93) Jaká je konečná prázdná proměnná?

Konečná proměnná, která nebyla inicializována v době deklarace, se nazývá konečná prázdná proměnná. Konečnou prázdnou proměnnou nemůžeme inicializovat přímo. Místo toho jej musíme inicializovat pomocí konstruktoru třídy. Je to užitečné v případě, kdy má uživatel nějaké údaje, které nesmí být měněny ostatními, například číslo PAN. Zvažte následující příklad:

 class Student{ int id; String name; final String PAN_CARD_NUMBER; ... } 
Více informací.

94) Můžeme inicializovat konečnou prázdnou proměnnou?

Ano, pokud není statický, můžeme jej inicializovat v konstruktoru. Pokud se jedná o statickou prázdnou finální proměnnou, lze ji inicializovat pouze ve statickém bloku. Více informací.


95) Můžete prohlásit hlavní metodu za konečnou?

Ano, metodu main můžeme deklarovat jako veřejnou statickou finální void main(String[] args){}.


96) Jaký je výstup následujícího programu Java?

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

Výstup

 20 

Vysvětlení

Protože i je prázdná konečná proměnná. Může být inicializován pouze jednou. Inicializovali jsme ji na 20. Proto se vytiskne 20.


97) Jaký je výstup následujícího programu 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(); } } 

Výstup

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

Vysvětlení

Metoda getDetails() je konečná; proto jej nelze v podtřídě přepsat.


98) Můžeme prohlásit konstruktor za konečný?

Konstruktor nemůže být nikdy deklarován jako konečný, protože se nikdy nedědí. Konstruktory nejsou běžné metody; proto nemá smysl prohlašovat konstruktory za konečné. Pokud se o to však pokusíte, kompilátor vyvolá chybu.


99) Můžeme prohlásit rozhraní za konečné?

Ne, nemůžeme deklarovat rozhraní jako konečné, protože rozhraní musí být implementováno nějakou třídou, aby poskytlo svou definici. Proto nemá smysl dělat rozhraní finálním. Pokud se o to však pokusíte, kompilátor zobrazí chybu.


100) Jaký je rozdíl mezi konečnou metodou a abstraktní metodou?

Hlavní rozdíl mezi konečnou metodou a abstraktní metodou je v tom, že abstraktní metoda nemůže být konečná, protože je musíme přepsat v podtřídě, abychom dali její definici.