logo

300 Core Java pitanja za intervju | Set 1

90% jamstvo pitanja za intervju

Postoji popis od 300 ključnih pitanja za intervju za Java. Ako vam je bilo postavljeno neko ključno pitanje za razgovor o Javi, postavite ga u odjeljak postavljanja pitanja. Uvjeravamo vas da ćete ovdje dobiti 90% često postavljanih pitanja i odgovora za intervju.

Odgovori na Core Java intervju pitanja su kratki i jasni. Osnovna pitanja za intervju o Javi kategorizirana su u pitanja za intervju o Osnovama Jave, pitanja za intervju za OOP, pitanja za intervju za rukovanje nizovima, pitanja za intervju za višenitnost, pitanja za intervju za kolekciju, pitanja za intervju za JDBC itd.


1 2 3 4 5

Core Java: Osnove Jave Pitanja za intervju


1) Što je Java?

Java je visoka razina, objektno orijentirano , robustan, siguran programski jezik, neovisan o platformi, visokih performansi, višenitni i prijenosni programski jezik. Razvio ga je James Gosling u lipnju 1991. Također se može nazvati platformom jer pruža vlastiti JRE i API.


2) Koje su razlike između C++ i Jave?

Razlike između C++ i Java dani su u sljedećoj tablici.

Indeks usporedbe C++Java
Neovisan o platformi C++ ovisi o platformi.Java je neovisna o platformi.
Uglavnom se koristi za C++ se uglavnom koristi za sistemsko programiranje.Java se uglavnom koristi za programiranje aplikacija. Široko se koristi u prozorskim, web-baziranim, poslovnim i mobilnim aplikacijama.
Cilj dizajna C++ je dizajniran za programiranje sustava i aplikacija. Bio je to produžetak C programski jezik .Java je dizajnirana i stvorena kao tumač za sustave ispisa, ali je kasnije proširena kao podrška mrežnom računalstvu. Osmišljen je s ciljem da bude jednostavan za korištenje i dostupan široj publici.
Ići C++ podržava naredbu goto.Java ne podržava naredbu goto.
Višestruko nasljeđivanje C++ podržava višestruko nasljeđivanje.Java ne podržava višestruko nasljeđivanje kroz klasu. Može se postići putem sučelja u Javi .
Preopterećenje operatora C++ podržava preopterećenje operatera .Java ne podržava preopterećenje operatora.
Pokazivači C++ podržava pokazivače. Program pokazivača možete napisati u C++.Java interno podržava pokazivač. Međutim, ne možete napisati pokazivački program u Javi. To znači da java ima ograničenu podršku pokazivača u Javi.
Sastavljač i tumač C++ koristi samo kompajler. C++ se prevodi i izvodi pomoću prevodioca koji pretvara izvorni kod u strojni kod tako da C++ ovisi o platformi.Java koristi i kompajler i interpreter. Java izvorni kod se pretvara u bajt kod u vrijeme kompilacije. Interpretator izvršava ovaj bajt kod tijekom izvođenja i proizvodi izlaz. Java se tumači i zato je neovisna o platformi.
Poziv po vrijednosti i Poziv po referenci C++ podržava i poziv po vrijednosti i poziv po referenci.Java podržava poziv samo prema vrijednosti. Ne postoji poziv prema referenci u Javi.
Struktura i unija C++ podržava strukture i unije.Java ne podržava strukture i unije.
Podrška za niti C++ nema ugrađenu podršku za niti. Za podršku niti oslanja se na biblioteke trećih strana.Java ima ugrađenu nit podrška.
Komentar dokumentacije C++ ne podržava komentare dokumentacije.Java podržava dokumentacijski komentar (/** ... */) za izradu dokumentacije za Java izvorni kod.
Virtualna ključna riječ C++ podržava virtualnu ključnu riječ tako da možemo odlučiti hoćemo li nadjačati funkciju ili ne.Java nema virtualnu ključnu riječ. Prema zadanim postavkama možemo nadjačati sve nestatičke metode. Drugim riječima, nestatičke metode su virtualne prema zadanim postavkama.
nepredpisani desni pomak >>> C++ ne podržava >>> operator.Java podržava unsigned right shift >>> operator koji popunjava nulu na vrhu za negativne brojeve. Za pozitivne brojeve, radi isto kao operator >>.
Stablo nasljeđivanja C++ uvijek stvara novo stablo nasljeđivanja.Java uvijek koristi jedno stablo nasljeđivanja jer su sve klase podređene klasi Object u Javi. Klasa objekta je korijen klase nasljedstvo stablo u Javi.
Hardver C++ je bliži hardveru.Java nije toliko interaktivna s hardverom.
Objektno orijentirano C++ je objektno orijentirani jezik. Međutim, u jeziku C jednokorijenska hijerarhija nije moguća.Java je također objektno orijentirano Jezik. Međutim, sve (osim temeljnih tipova) je objekt u Javi. To je hijerarhija s jednim korijenom budući da se sve izvodi iz java.lang.Object.

3) Navedite značajke programskog jezika Java.

U programskom jeziku Java postoje sljedeće značajke.

    Jednostavan:Javu je lako naučiti. Sintaksa Jave temelji se na C++ što olakšava pisanje programa u njoj.
    Objektno orijentirano:Java slijedi objektno orijentiranu paradigmu koja nam omogućuje da svoj kod održavamo kao kombinaciju različitih vrsta objekata koji uključuje i podatke i ponašanje.
    Prijenosni:Java podržava pristup čitanja jednom pisanja bilo gdje. Java program možemo pokrenuti na svakom računalu. Java program (.java) pretvara se u bajt kod (.class) koji se može lako pokrenuti na svakom računalu.
    Neovisno o platformi:Java je programski jezik neovisan o platformi. Razlikuje se od drugih programskih jezika kao što su C i C++ koji trebaju platformu za izvršavanje. Java dolazi sa svojom platformom na kojoj se izvršava njen kod. Java ne ovisi o operacijskom sustavu koji se izvršava.
    Osigurano:Java je zaštićena jer ne koristi eksplicitne pokazivače. Java također nudi koncept ByteCode i rukovanje iznimkama što je čini sigurnijom.
    Robustan:Java je snažan programski jezik jer koristi snažno upravljanje memorijom. Koncepti poput automatskog skupljanja smeća, rukovanja iznimkama itd. čine ga robusnijim.
    Arhitektura neutralna:Java je arhitektonski neutralna jer ne ovisi o arhitekturi. U C-u veličina tipova podataka može varirati ovisno o arhitekturi (32-bitna ili 64-bitna) koja ne postoji u Javi.
    Tumačeno:Java koristi Just-in-time (JIT) interpreter zajedno s kompajlerom za izvođenje programa.
    Visoke performanse:Java je brža od drugih tradicionalno interpretiranih programskih jezika jer je Java bajt kod 'blizak' izvornom kodu. Još uvijek je malo sporiji od prevedenog jezika (npr. C++).
    Višenitno:Možemo napisati Java programe koji se bave mnogim zadacima odjednom definiranjem više niti. Glavna prednost multi-threadinga je da ne zauzima memoriju za svaku nit. Dijeli zajedničko memorijsko područje. Niti su važne za multimedije, web aplikacije itd.
    Distribuirano:Java je distribuirana jer korisnicima olakšava stvaranje distribuiranih aplikacija u Javi. RMI i EJB se koriste za kreiranje distribuiranih aplikacija. Ova značajka Jave omogućuje nam pristup datotekama pozivanjem metoda s bilo kojeg računala na internetu.
    Dinamičan:Java je dinamičan jezik. Podržava dinamičko učitavanje klasa. To znači da se klase učitavaju na zahtjev. Također podržava funkcije iz svojih izvornih jezika, tj. C i C++.

4) Što podrazumijevate pod Java virtualnim strojem?

Java virtualni stroj je virtualni stroj koji računalu omogućuje pokretanje Java programa. JVM se ponaša kao run-time engine koji poziva glavnu metodu prisutnu u Java kodu. JVM je specifikacija koja mora biti implementirana u računalni sustav. Java kod kompilira JVM da bude bajt kod koji je neovisan o stroju i blizak izvornom kodu.


5) Koja je razlika između JDK, JRE i JVM?

JVM

JVM je akronim za Java Virtual Machine; to je apstraktni stroj koji pruža okruženje za izvođenje u kojem se može izvršiti Java bajt kod. To je specifikacija koja specificira rad Java Virtual Machine. Njegovu implementaciju osigurali su Oracle i druge tvrtke. Njegova implementacija je poznata kao JRE.

JVM-ovi su dostupni za mnoge hardverske i softverske platforme (pa JVM ovisi o platformi). To je runtime instanca koja se stvara kada pokrenemo Java klasu. Postoje tri pojma JVM-a: specifikacija, implementacija i instanca.

JRE

JRE je kratica za Java Runtime Environment. To je implementacija JVM-a. Java Runtime Environment je skup softverskih alata koji se koriste za razvoj Java aplikacija. Koristi se za pružanje okruženja za izvođenje. To je implementacija JVM-a. Fizički postoji. Sadrži skup biblioteka + druge datoteke koje JVM koristi tijekom izvođenja.

JDK

JDK je akronim za Java Development Kit. To je okruženje za razvoj softvera koje se koristi za razvoj Java aplikacija i apleta. Fizički postoji. Sadrži JRE + razvojne alate. JDK je implementacija bilo koje od dolje navedenih Java platformi koje je izdala Oracle Corporation:

  • Standardno izdanje Java platforme
  • Enterprise Edition Java platforma
  • Micro Edition Java platforma
Više detalja.

6) Koliko tipova memorijskih područja dodjeljuje JVM?

Mnogo vrsta:

    Područje klase (metode):Class Area pohranjuje strukture po klasama kao što su skup konstanti vremena izvođenja, polje, podaci metode i kod za metode.Hrpa:To je područje podataka za vrijeme izvođenja u kojem se memorija dodjeljuje objektimaStog:Java Stack pohranjuje okvire. Sadrži lokalne varijable i djelomične rezultate te igra ulogu u pozivanju i vraćanju metode. Svaka nit ima privatni JVM stog, kreiran u isto vrijeme kad i nit. Svaki put kada se pozove metoda kreira se novi okvir. Okvir se uništava kada se dovrši pozivanje njegove metode.Registar programskog brojača:PC (brojač programa) registar sadrži adresu instrukcije Java virtualnog stroja koja se trenutno izvršava.Stog izvornih metoda:Sadrži sve izvorne metode korištene u aplikaciji.
Više detalja.

7) Što je JIT kompajler?

Just-In-Time (JIT) kompajler: Koristi se za poboljšanje performansi. JIT kompajlira dijelove bajt koda koji imaju sličnu funkcionalnost u isto vrijeme, i stoga smanjuje količinu vremena potrebnog za kompilaciju. Ovdje se izraz kompilator odnosi na prevoditelja iz skupa instrukcija Java virtualnog stroja (JVM) u skup instrukcija određenog CPU-a.


8) Što je platforma?

Platforma je hardversko ili softversko okruženje u kojem se izvršava dio softvera. Postoje dvije vrste platformi, softverske i hardverske. Java pruža platformu temeljenu na softveru.


9) Koje su glavne razlike između Java platforme i drugih platformi?

Postoje sljedeće razlike između Java platforme i drugih platformi.

  • Java je platforma temeljena na softveru, dok druge platforme mogu biti hardverske platforme ili platforme temeljene na softveru.
  • Java se izvršava na vrhu drugih hardverskih platformi, dok druge platforme mogu imati samo hardverske komponente.

10) Što Javi daje njenu prirodu 'napiši jednom i pokreni bilo gdje'?

Bajt kod. Java prevodilac pretvara Java programe u datoteku klase (Byte Code) koja je međujezik između izvornog koda i strojnog koda. Ovaj bajt kod nije specifičan za platformu i može se izvršiti na bilo kojem računalu.


11) Što je classloader?

Classloader je podsustav JVM-a koji se koristi za učitavanje datoteka klasa. Kad god pokrenemo java program, prvo ga učitava classloader. Postoje tri ugrađena učitavača klasa u Javi.

    Bootstrap ClassLoader: Ovo je prvi učitavač klasa koji je superklasa učitavača klasa proširenja. Učitava rt.jar datoteka koja sadrži sve datoteke klasa Java Standard Edition kao što su klase paketa java.lang, klase paketa java.net, klase paketa java.util, klase paketa java.io, klase paketa java.sql itd.Extension ClassLoader: Ovo je podređeni učitavač klasa Bootstrapa i nadređeni učitavač razreda učitavača klasa sustava. Učitava jar datoteke koje se nalaze unutra $JAVA_HOME/jre/lib/ext imenik.System/Application ClassLoader: Ovo je podređeni učitavač klasa Extension classloader. Učitava datoteke klasa iz putanje klasa. Prema zadanim postavkama, classpath je postavljen na trenutni direktorij. Možete promijeniti classpath koristeći '-cp' ili '-classpath' prekidač. Također je poznat kao Application classloader.

12) Je li naziv prazne .java datoteke važeći naziv izvorne datoteke?

Da, Java omogućuje spremanje naše java datoteke putem .Java samo, moramo ga kompajlirati prema javac .java i trčati pored ime java klase Uzmimo jednostavan primjer:

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

sastaviti ga po javac .java

prođi to java A


13) Je li u Javi ključna riječ delete, next, main, exit ili null?

Ne.


14) Ako ne dam nikakve argumente u naredbenom retku, koja će vrijednost pohranjena u nizu nizova biti proslijeđena u metodu main(), prazna ili NULL?

Prazan je, ali nije nula.


15) Što ako napišem static public void umjesto public static void?

Program se kompilira i radi ispravno jer redoslijed specifikatora nije bitan u Javi.


16) Koja je zadana vrijednost lokalnih varijabli?

Lokalne varijable nisu inicijalizirane ni na jednu zadanu vrijednost, niti primitivne niti reference na objekte.


17) Koji su različiti specifikatori pristupa u Javi?

U Javi, specifikatori pristupa su ključne riječi koje se koriste za definiranje opsega pristupa metode, klase ili varijable. U Javi postoje četiri specifikatera pristupa koja su navedena u nastavku.

    JavnostKlasama, metodama ili varijablama koje su definirane kao javne može se pristupiti bilo kojom klasom ili metodom.ZaštićenZaštićenom se može pristupiti putem klase istog paketa, ili potklase ove klase, ili unutar iste klase.ZadanoZadane su dostupne samo unutar paketa. Prema zadanim postavkama, sve klase, metode i varijable imaju zadani opseg.PrivatnaPrivatnoj klasi, metodama ili varijablama koje su definirane kao privatne može se pristupiti samo unutar klase.

18) Koja je svrha statičkih metoda i varijabli?

Metode ili varijable definirane kao statičke dijele se među svim objektima klase. Statika je dio klase, a ne objekta. Statičke varijable pohranjene su u području klase i ne trebamo kreirati objekt za pristup takvim varijablama. Stoga se statički koristi u slučaju kada trebamo definirati varijable ili metode koje su zajedničke svim objektima klase.

Na primjer, u razredu koji simulira prikupljanje studenata na koledžu, naziv koledža zajednički je atribut za sve studente. Stoga će naziv fakulteta biti definiran kao statički .


19) Koje su prednosti paketa u Javi?

Postoje razne prednosti definiranja paketa u Javi.

  • Paketi izbjegavaju sukobe imena.
  • Paket omogućuje lakšu kontrolu pristupa.
  • Također možemo imati skrivene klase koje nisu vidljive izvana i koje koristi paket.
  • Lakše je locirati povezane klase.

20) Koji je izlaz sljedećeg Java programa?

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

Izlaz gornjeg koda bit će

 30Javatpoint Javatpoint1020 

Obrazloženje

U prvom slučaju, 10 i 20 tretiraju se kao brojevi i zbrajaju se da bi dobili 30. Sada se njihov zbroj 30 tretira kao niz i povezuje s nizom Javatpoint . Stoga će izlaz biti 30Javatpoint .

U drugom slučaju, niz Javatpoint je spojen s 10 da bude niz Javatpoint10 koji će tada biti spojen s 20 biti Javatpoint1020 .


21) Koji je izlaz sljedećeg Java programa?

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

Izlaz gornjeg koda bit će

 200Javatpoint Javatpoint200 

Obrazloženje

U prvom slučaju, prvo će se pomnožiti brojevi 10 i 20, a zatim se rezultat 200 tretira kao niz i spaja s nizom Javatpoint proizvesti izlaz 200Javatpoint .

U drugom slučaju, brojevi 10 i 20 će se prvo pomnožiti da bi bili 200 jer je prednost množenja veća od zbrajanja. Rezultat 200 tretirat će se kao niz i spojiti s nizom Javatpoint proizvesti izlaz kao Javatpoint200 .


22) Koji je izlaz sljedećeg Java programa?

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

Gornji kod će dati pogrešku tijekom kompajliranja jer for petlja zahtijeva booleovu vrijednost u drugom dijelu, a mi dajemo cjelobrojnu vrijednost, tj. 0.


Core Java - OOP koncepti: Početna pitanja za OOP intervju

Dano je više od 50 OOP (objektno orijentirano programiranje i sustav) pitanja za intervju. Međutim, oni su kategorizirani u mnoge odjeljke kao što su pitanja za intervjue konstruktora, pitanja za statičke intervjue, pitanja za intervju o nasljeđivanju, pitanja za intervju za apstrakciju, pitanja za intervju za polimorfizam itd. radi boljeg razumijevanja.


23) Što je objektno orijentirana paradigma?

To je paradigma programiranja koja se temelji na objektima koji imaju podatke i metode definirane u klasi kojoj pripadaju. Objektno orijentirana paradigma ima za cilj uključiti prednosti modularnosti i ponovne upotrebe. Objekti su instance klasa koje međusobno djeluju kako bi dizajnirale aplikacije i programe. Postoje sljedeće značajke objektno orijentirane paradigme.

  • Slijedi pristup odozdo prema gore u dizajnu programa.
  • Usredotočite se na podatke s metodama za rad s podacima objekta
  • Uključuje koncept poput enkapsulacije i apstrakcije koji skriva složenosti od korisnika i prikazuje samo funkcionalnost.
  • Implementira pristup u stvarnom vremenu poput nasljeđivanja, apstrakcije itd.
  • Primjeri objektno orijentirane paradigme su C++, Simula, Smalltalk, Python, C#, itd.

24) Što je objekt?

Objekt je entitet u stvarnom vremenu koji ima neko stanje i ponašanje. U Javi, Object je instanca klase koja ima varijable instance kao stanje objekta i metode kao ponašanje objekta. Objekt klase može se stvoriti korištenjem novi ključna riječ.


25) Koja je razlika između objektno orijentiranog programskog jezika i objektno orijentiranog programskog jezika?

Postoje sljedeće osnovne razlike između objektno orijentiranog jezika i objektno orijentiranog jezika.

  • Objektno orijentirani jezici slijede sve koncepte OOP-a, dok jezik temeljen na objektima ne slijedi sve koncepte OOP-a kao što su nasljeđivanje i polimorfizam.
  • Objektno orijentirani jezici nemaju ugrađene objekte, dok jezici bazirani na objektima imaju ugrađene objekte, na primjer, JavaScript ima objekt prozora.
  • Primjeri objektno orijentiranog programiranja su Java, C#, Smalltalk itd., dok su primjeri objektno orijentiranih jezika JavaScript, VBScript itd.

26) Koja će biti početna vrijednost reference objekta koja je definirana kao varijabla instance?

Sve reference objekta inicijalizirane su na null u Javi.


Core Java - OOP koncepti: Pitanja za intervju konstruktora


27) Što je konstruktor?

Konstruktor se može definirati kao posebna vrsta metode koja se koristi za inicijalizaciju stanja objekta. Poziva se kada se klasa instancira, a memorija se dodjeljuje za objekt. Svaki put se objekt kreira pomoću novi ključna riječ, poziva se zadani konstruktor klase. Naziv konstruktora mora biti sličan nazivu klase. Konstruktor ne smije imati eksplicitni povratni tip.

Više detalja.

28) Koliko se tipova konstruktora koristi u Javi?

Na temelju parametara proslijeđenih u konstruktorima, u Javi postoje dvije vrste konstruktora.

    Zadani konstruktor:zadani konstruktor je onaj koji ne prihvaća nikakvu vrijednost. Zadani konstruktor se uglavnom koristi za inicijalizaciju varijable instance sa zadanim vrijednostima. Također se može koristiti za izvođenje nekih korisnih zadataka na stvaranju objekta. Zadani konstruktor implicitno se poziva od strane kompajlera ako u klasi nije definiran konstruktor.Parametrizirani konstruktor:Parametrizirani konstruktor je onaj koji može inicijalizirati varijable instance s danim vrijednostima. Drugim riječima, možemo reći da se konstruktori koji mogu prihvatiti argumente nazivaju parametrizirani konstruktori.
Java konstruktori

29) Koja je svrha zadanog konstruktora?

Svrha zadanog konstruktora je dodjeljivanje zadane vrijednosti objektima. Java prevoditelj implicitno stvara zadani konstruktor ako u klasi nema konstruktora.

 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(); } } 
Testirajte sada

Izlaz:

 0 null 0 null 

Obrazloženje: U gornjoj klasi ne stvarate nikakav konstruktor, tako da vam kompajler daje zadani konstruktor. Ovdje su vrijednosti 0 i null navedene prema zadanom konstruktoru.

Java zadani konstruktor
Više detalja.

30) Vraća li konstruktor bilo kakvu vrijednost?

Godine: da, konstruktor implicitno vraća trenutnu instancu klase (ne možete koristiti eksplicitni povratni tip s konstruktorom). Više detalja.


31) Je li konstruktor naslijeđen?

Ne, konstruktor se ne nasljeđuje.


32) Možete li napraviti konačan konstruktor?

Ne, konstruktor ne može biti konačan.

pokazivači u c

33) Možemo li preopteretiti konstruktore?

Da, konstruktori se mogu preopteretiti promjenom broja argumenata koje konstruktor prihvaća ili promjenom tipa podataka parametara. Razmotrite sljedeći primjer.

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

U gornjem programu, Test konstruktora je preopterećen drugim konstruktorom. U prvom pozivu konstruktoru, poziva se konstruktor s jednim argumentom, a i će se inicijalizirati s vrijednošću 10. Međutim, u drugom pozivu konstruktoru, poziva se konstruktor s 2 argumenta, a i će se inicijalizirati s vrijednošću 15.


34) Što podrazumijevate pod konstruktorom kopiranja u Javi?

Ne postoji konstruktor kopiranja u Javi. Međutim, možemo kopirati vrijednosti s jednog objekta na drugi poput konstruktora kopiranja u C++.

Postoji mnogo načina kopiranja vrijednosti jednog objekta u drugi u Javi. Oni su:

  • Po konstruktoru
  • Dodjeljivanjem vrijednosti jednog objekta drugom
  • Metodom clone() klase Object

U ovom primjeru ćemo kopirati vrijednosti jednog objekta u drugi pomoću java konstruktora.

 //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(); } } 
Testirajte sada

Izlaz:

 111 Karan 111 Karan 

35) Koje su razlike između konstruktora i metoda?

Postoje mnoge razlike između konstruktora i metoda. Oni su navedeni u nastavku.

Java konstruktorJava metoda
Konstruktor se koristi za inicijalizaciju stanja objekta.Metoda se koristi za otkrivanje ponašanja objekta.
Konstruktor ne smije imati povratni tip.Metoda mora imati tip povrata.
Konstruktor se poziva implicitno.Metoda se poziva eksplicitno.
Java prevoditelj daje zadani konstruktor ako nemate konstruktor u klasi.Metodu ni u kojem slučaju ne daje kompilator.
Naziv konstruktora mora biti isti kao naziv klase.Naziv metode može ali ne mora biti isti kao naziv klase.

Java konstruktori vs metode

36) Što je izlaz sljedećeg Java programa?

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

Izlaz sljedećeg programa je:

 a = 10 b = 15 

Ovdje se tip podataka varijabli a i b, tj. bajt promiče u int, a poziva se prvi parametrizirani konstruktor s dva cjelobrojna parametra.


37) Koji je izlaz sljedećeg Java programa?

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

Izlaz programa je 0 jer je varijabla i interno inicijalizirana na 0. Kako znamo da se zadani konstruktor implicitno poziva ako nema konstruktora u klasi, varijabla i se inicijalizira na 0 budući da nema konstruktora u klasi.


38) Koji je izlaz sljedećeg Java programa?

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

Tamo je greška prevoditelja u programu jer postoji poziv zadanom konstruktoru u glavnoj metodi koji nije prisutan u klasi. Međutim, postoji samo jedan parametrizirani konstruktor u klasi Test. Stoga, konstruktor implicitno ne poziva zadani konstruktor.


Core Java - OOP koncepti: statička ključna riječ Pitanja za intervju


39) Što je statička varijabla?

Statička varijabla koristi se za upućivanje na zajedničko svojstvo svih objekata (koje nije jedinstveno za svaki objekt), npr. naziv tvrtke zaposlenika, naziv fakulteta studenata itd. Statička varijabla dobiva memoriju samo jednom u području klase na vrijeme učitavanja klase. Korištenje statičke varijable čini vaš program memorijski učinkovitijim (štedi memoriju). Statička varijabla pripada klasi, a ne 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(); } } 
Testirajte sada
 Output:111 Karan ITS 222 Aryan ITS 

Više detalja.

40) Što je statička metoda?

  • Statička metoda pripada klasi, a ne objektu.
  • Nema potrebe za stvaranjem objekta za pozivanje statičkih metoda.
  • Statička metoda može pristupiti i promijeniti vrijednost statičke varijable.
Više detalja.

41) Koja su ograničenja koja se primjenjuju na Java statičke metode?

Na statičke metode primjenjuju se dva glavna ograničenja.

  • Statička metoda ne može koristiti nestatičke podatkovne članove niti izravno pozvati nestatičku metodu.
  • this i super ne mogu se koristiti u statičkom kontekstu jer nisu statični.

42) Zašto je glavna metoda statična?

Budući da objekt nije potreban za pozivanje statičke metode. Ako glavnu metodu učinimo nestatičnom, JVM će morati prvo kreirati svoj objekt, a zatim pozvati metodu main(), što će dovesti do dodatne dodjele memorije. Više detalja.


43) Možemo li nadjačati statičke metode?

Ne, ne možemo nadjačati statičke metode.

44) Što je statički blok?

Statički blok se koristi za inicijalizaciju člana statičkih podataka. Izvršava se prije glavne metode, u vrijeme učitavanja klase.

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

Više detalja.

45) Možemo li izvršiti program bez main() metode?

Odgovor) Ne, bilo je moguće prije JDK 1.7 korištenjem statičkog bloka. Od JDK 1.7 to nije moguće. Više detalja.


46) Što ako se statički modifikator ukloni iz potpisa glavne metode?

Program se sastavlja. Međutim, tijekom izvođenja izbacuje pogrešku 'NoSuchMethodError.'


47) Koja je razlika između statičke (klasne) metode i metode instance?

statička ili klasa metodametoda instance
1) Metoda koja je deklarirana kao statična poznata je kao statička metoda.Metoda koja nije deklarirana kao statična poznata je kao metoda instance.
2) Ne trebamo kreirati objekte za pozivanje statičkih metoda.Objekt je potreban za pozivanje metoda instance.
3) Nestatičnim (instancama) članovima ne može se pristupiti izravno u statičkom kontekstu (statička metoda, statički blok i statička ugniježđena klasa).I statičkim i nestatičkim varijablama može se pristupiti u metodama instance.
4) Na primjer: public static int cube(int n){ return n*n*n;}Na primjer: public void msg(){...}.

48) Možemo li konstruktore učiniti statičnim?

Kao što znamo, statički kontekst (metoda, blok ili varijabla) pripada klasi, a ne objektu. Budući da se konstruktori pozivaju samo kada je objekt kreiran, nema smisla da konstruktori budu statični. Međutim, ako to pokušate učiniti, prevodilac će pokazati pogrešku prevoditelja.


49) Možemo li apstraktne metode učiniti statičnima u Javi?

U Javi, ako apstraktne metode učinimo statičnim, one će postati dio klase i možemo je izravno pozvati što je nepotrebno. Pozivanje nedefinirane metode potpuno je beskorisno stoga nije dopušteno.


50) Možemo li deklarirati statičke varijable i metode u apstraktnoj klasi?

Da, možemo deklarirati statičke varijable i metode u apstraktnoj metodi. Kako znamo da ne postoji zahtjev da objekt pristupi statičkom kontekstu, stoga možemo pristupiti statičkom kontekstu deklariranom unutar apstraktne klase korištenjem imena apstraktne klase. Razmotrite sljedeći primjer.

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

Izlaz

 hi !! I am good !! i = 102 

Core Java - OOP koncepti: Pitanja za intervju o nasljeđivanju


51) Što je ovaj ključna riječ u Javi?

The ovaj ključna riječ je referentna varijabla koja se odnosi na trenutni objekt. Postoje različite upotrebe ove ključne riječi u Javi. Može se koristiti za upućivanje na trenutna svojstva klase kao što su metode instance, varijable, konstruktori, itd. Također se može proslijediti kao argument u metode ili konstruktore. Također se može vratiti iz metode kao trenutna instanca klase.

java ovu ključnu riječ
Više detalja.

52) Koje su glavne namjene ove ključne riječi?

Postoje sljedeće upotrebe ovaj ključna riječ.

    ovajmože se koristiti za upućivanje na varijablu instance trenutne klase.ovajmože se koristiti za pozivanje metode trenutne klase (implicitno)ovaj()može se koristiti za pozivanje trenutnog konstruktora klase.ovajmože se proslijediti kao argument u pozivu metode.ovajmože se proslijediti kao argument u pozivu konstruktora.ovajmože se koristiti za vraćanje trenutne instance klase iz metode.

53) Možemo li dodijeliti referencu na ovaj varijabla?

Ne, ovo se ne može dodijeliti nijednoj vrijednosti jer uvijek pokazuje na trenutni objekt klase i ovo je konačna referenca u Javi. Međutim, ako to pokušamo učiniti, prikazat će se pogreška prevoditelja. Razmotrite sljedeći primjer.

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

Izlaz

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

54) Može ovaj koristiti ključnu riječ za upućivanje na statičke članove?

Da, moguće je koristiti ovu ključnu riječ za upućivanje na statičke članove jer je ovo samo referentna varijabla koja se odnosi na trenutni objekt klase. Međutim, kao što znamo, nije potrebno pristupati statičkim varijablama putem objekata, stoga nije najbolja praksa koristiti ovo za upućivanje na statičke članove. Razmotrite sljedeći primjer.

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

Izlaz

 10 

55) Kako se ulančavanje konstruktora može izvesti pomoću ove ključne riječi?

Ulančavanje konstruktora omogućuje nam pozivanje jednog konstruktora iz drugog konstruktora klase s obzirom na trenutni objekt klase. Ovu ključnu riječ možemo koristiti za izvođenje lančanog povezivanja konstruktora unutar iste klase. Razmotrite sljedeći primjer koji ilustrira kako možemo koristiti ovu ključnu riječ za postizanje lančanog povezivanja konstruktora.

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

Izlaz

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

56) Koje su prednosti prosljeđivanja ovoga u metodu umjesto samog objekta trenutne klase?

Kao što znamo, ovo se odnosi na trenutni objekt klase, stoga mora biti sličan trenutnom objektu klase. Međutim, mogu postojati dvije glavne prednosti prosljeđivanja ovoga u metodu umjesto trenutnog objekta klase.

  • ovo je konačna varijabla. Stoga se ovo ne može dodijeliti nijednoj novoj vrijednosti dok trenutni objekt klase možda nije konačan i može se promijeniti.
  • ovo se može koristiti u sinkroniziranom bloku.

57) Što je nasljedstvo?

Nasljeđivanje je mehanizam kojim jedan objekt stječe sva svojstva i ponašanje drugog objekta druge klase. Koristi se za ponovnu upotrebu koda i nadjačavanje metode. Ideja iza nasljeđivanja u Javi je da možete stvoriti nove klase koje su izgrađene na postojećim klasama. Kada naslijedite od postojeće klase, možete ponovno koristiti metode i polja nadređene klase. Štoviše, možete dodati nove metode i polja u svoju trenutnu klasu. Nasljeđivanje predstavlja IS-A odnos koji je također poznat kao odnos roditelj-dijete.

U Javi postoji pet tipova nasljeđivanja.

  • Nasljeđivanje na jednoj razini
  • Nasljeđivanje na više razina
  • Višestruko nasljeđivanje
  • Hijerarhijsko nasljeđivanje
  • Hibridno nasljeđivanje

Višestruko nasljeđivanje nije podržano u Javi kroz klasu.

Više detalja.

58) Zašto se nasljeđivanje koristi u Javi?

Postoje razne prednosti korištenja nasljeđivanja u Javi koje su navedene u nastavku.

  • Nasljeđivanje omogućuje ponovnu upotrebu koda. Izvedena klasa ne treba redefinirati metodu osnovne klase osim ako ne mora osigurati specifičnu implementaciju metode.
  • Polimorfizam vremena izvođenja ne može se postići bez korištenja nasljeđivanja.
  • Možemo simulirati nasljeđivanje klasa s objektima u stvarnom vremenu što OOP-ove čini realističnijim.
  • Nasljeđivanje omogućuje skrivanje podataka. Osnovna klasa može sakriti neke podatke iz izvedene klase tako da ih učini privatnima.
  • Nadjačavanje metode ne može se postići bez nasljeđivanja. Prevladavanjem metode možemo dati specifičnu implementaciju neke osnovne metode koju sadrži osnovna klasa.

59) Koja je klasa nadklasa za sve klase?

Objektna klasa je nadklasa svih ostalih klasa u Javi.


60) Zašto višestruko nasljeđivanje nije podržano u Javi?

Kako bi se smanjila složenost i pojednostavio jezik, višestruko nasljeđivanje nije podržano u Javi. Razmotrimo scenarij u kojem su A, B i C tri klase. C klasa nasljeđuje A i B klasu. Ako A i B klase imaju istu metodu i vi je pozovete iz objekta klase djeteta, bit će dvosmisleno pozvati metodu A ili B klase.

Budući da su pogreške u vremenu prevođenja bolje od pogrešaka u vremenu izvođenja, Java prikazuje pogrešku u vremenu prevođenja ako naslijedite 2 klase. Dakle, bez obzira imate li istu metodu ili drugu, doći će do pogreške vremena kompajliranja.

 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? } } 
Testirajte sada
 Compile Time Error 

61) Što je agregacija?

Agregacija se može definirati kao odnos između dvije klase gdje klasa agregata sadrži referencu na klasu koju posjeduje. Agregacija se najbolje opisuje kao a ima odnos. Na primjer, agregatna klasa Zaposlenik koja ima različita polja kao što su dob, ime i plaća također sadrži objekt klase Adresa koja ima različita polja kao što su adresa-redak 1, grad, država i pin kod. Drugim riječima, možemo reći da Zaposlenik (klasa) ima objekt klase Adresa. Razmotrite sljedeći primjer.

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

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

Izlaz

 111 varun gzb UP india 112 arun gno UP india 

62) Što je kompozicija?

Držanje reference klase unutar neke druge klase poznato je kao sastav. Kada objekt sadrži drugi objekt, ako sadržani objekt ne može postojati bez postojanja spremnika, tada se to naziva kompozicijom. Drugim riječima, možemo reći da je kompozicija poseban slučaj agregacije koja predstavlja jači odnos između dva objekta. Primjer: razred sadrži učenike. Učenik ne može postojati bez razreda. Postoji sklad između razreda i učenika.


63) Koja je razlika između agregacije i kompozicije?

Agregacija predstavlja slab odnos, dok sastav predstavlja jak odnos. Na primjer, bicikl ima indikator (agregat), ali bicikl ima motor (sastav).


64) Zašto Java ne podržava pokazivače?

Pokazivač je varijabla koja se odnosi na memorijsku adresu. Ne koriste se u Javi jer su nesigurni (nesigurni) i složeni za razumijevanje.


65) Što je super u Javi?

The super ključna riječ u Javi je referentna varijabla koja se koristi za upućivanje na neposredni nadređeni objekt klase. Kad god kreirate instancu potklase, implicitno se kreira instanca roditeljske klase na koju upućuje varijabla super reference. Kompajler implicitno poziva super() u konstruktoru klase ako ne postoji super ili ovo.

 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(); } } 
Testirajte sada

Izlaz:

 animal is created dog is created 
Više detalja.

66) Kako se ulančavanje konstruktora može izvesti pomoću ključne riječi 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); } } 

Izlaz

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

67) Koje su glavne upotrebe ključne riječi super?

Postoje sljedeće upotrebe ključne riječi super.

  • super se može koristiti za referiranje na varijablu instance neposredne nadređene klase.
  • super se može koristiti za pozivanje metode neposredne nadređene klase.
  • super() se može koristiti za pozivanje neposrednog roditeljskog konstruktora klase.

68) Koje su razlike između ove i super ključne riječi?

Postoje sljedeće razlike između ove i super ključne riječi.

  • Ključna riječ super uvijek ukazuje na kontekst roditeljske klase, dok ova ključna riječ uvijek ukazuje na kontekst trenutne klase.
  • Ključna riječ super primarno se koristi za inicijaliziranje varijabli osnovne klase unutar izvedenog konstruktora klase, dok se ova ključna riječ prvenstveno koristi za razlikovanje lokalnih varijabli od varijabli instance kada se prosljeđuju u konstruktoru klase.
  • Super i this moraju biti prva izjava unutar konstruktora inače će kompajler izbaciti pogrešku.

69) Koji je izlaz sljedećeg Java programa?

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

Izlaz

 Person class constructor called Employee class constructor called 

Obrazloženje

Kompajler implicitno poziva super() ako nijedan super() ili this() nije eksplicitno uključen unutar izvedenog konstruktora klase. Stoga se u ovom slučaju prvo poziva konstruktor klase Osoba, a zatim se poziva konstruktor klase Zaposlenik.


70) Možete li koristiti this() i super() u konstruktoru?

Ne, jer this() i super() moraju biti prvi iskaz u konstruktoru klase.

Primjer:

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

Izlaz:

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

71)Što je kloniranje objekta?

Kloniranje objekta koristi se za stvaranje točne kopije objekta. Metoda clone() klase Object koristi se za kloniranje objekta. The java.lang.Klonirati sučelje mora implementirati klasa čiji klon objekta želimo kreirati. Ako ne implementiramo Cloneable sučelje, metoda clone() generira CloneNotSupportedException.

 protected Object clone() throws CloneNotSupportedException 
Više detalja.

Core Java - OOP koncepti: Pitanja za intervju za preopterećenje metoda


72) Što je preopterećenje metode?

Preopterećenje metoda je tehnika polimorfizma koja nam omogućuje stvaranje više metoda s istim imenom, ali različitim potpisom. Preopterećenje metode možemo postići na dva načina.

  • Promjenom broja argumenata
  • Promjenom vrste podataka argumenata

Preopterećenje metoda povećava čitljivost programa. Preopterećenje metoda izvodi se kako bi se brzo shvatio program.

Više detalja.

73) Zašto preopterećenje metode nije moguće promjenom vrste povrata u Javi?

U Javi, preopterećenje metode nije moguće promjenom vrste povrata programa zbog izbjegavanja dvosmislenosti.

 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 }} 
Testirajte sada

Izlaz:

 Compile Time Error: method add(int, int) is already defined in class Adder 
Više detalja.

74) Možemo li preopteretiti metode tako da ih učinimo statičnima?

Ne, ne možemo preopteretiti metode samo primjenom statične ključne riječi na njih (broj parametara i vrsta su isti). Razmotrite sljedeći primjer.

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

Izlaz

 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) Možemo li preopteretiti main() metodu?

Da, možemo imati bilo koji broj glavnih metoda u Java programu korištenjem preopterećenja metoda.

Više detalja.

76) Što je preopterećenje metode s promicanjem tipa?

Pod Tipom promocija je preopterećenje metode, mislimo da se jedna vrsta podataka može implicitno promovirati u drugu ako se ne pronađe točno podudaranje.

Preopterećenje Java metode s promicanjem tipa

Kao što je prikazano na gornjem dijagramu, bajt se može unaprijediti u short, int, long, float ili double. Kratki tip podataka može se unaprijediti u int, long, float ili double. Tip podataka char može se unaprijediti u int, long, float ili double i tako dalje. Razmotrite sljedeći primjer.

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

Izlaz

 40 60 

77) Što je izlaz sljedećeg Java programa?

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

Izlaz

 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 

Obrazloženje

Postoje dvije definirane metode s istim nazivom, tj. zbroj. Prva metoda prihvaća integer i long tip dok druga metoda prihvaća long i integer tip. Prošli su parametri a = 20, b = 20. Ne možemo reći koja će se metoda pozvati jer ne postoji jasna razlika između cjelobrojnog literala i dugog literala. Ovo je slučaj dvosmislenosti. Stoga će prevodilac izbaciti pogrešku.


Core Java - OOP koncepti: Metoda koja nadjačava pitanja za intervju


78) Što je nadjačavanje metode:

Ako potklasa pruža specifičnu implementaciju metode koju već nudi njena nadređena klasa, to je poznato kao nadjačavanje metode. Koristi se za polimorfizam vremena izvođenja i implementaciju metoda sučelja.

Pravila za nadjačavanje metode

  • Metoda mora imati isto ime kao u nadređenoj klasi.
  • Metoda mora imati isti potpis kao u roditeljskoj klasi.
  • Dvije klase moraju imati odnos IS-A između sebe.
Više detalja.


79) Možemo li nadjačati statičku metodu?

Ne, ne možete nadjačati statičku metodu jer su one dio klase, a ne objekt.


80) Zašto ne možemo nadjačati statičku metodu?

To je zato što je statička metoda dio klase i povezana je s klasom, dok je metoda instance vezana s objektom, a statička dobiva memoriju u području klase, a instanca dobiva memoriju u gomili.


81) Možemo li nadjačati preopterećenu metodu?

Da.


82) Razlika između preopterećenja i nadjačavanja metode.

Preopterećenje metodeNadjačavanje metode
1) Preopterećenje metoda povećava čitljivost programa.Nadjačavanje metode osigurava specifičnu implementaciju metode koju već nudi njezina nadklasa.
2) Dolazi do preopterećenja metode unutar klase.Nadjačavanje metode događa se u dvije klase koje između sebe imaju odnos IS-A.
3) U ovom slučaju, parametri moraju biti različiti.U ovom slučaju, parametri moraju biti isti.

83) Možemo li nadjačati privatne metode?

Ne, ne možemo nadjačati privatne metode jer je opseg privatnih metoda ograničen na klasu i ne možemo im pristupiti izvan klase.


84) Možemo li promijeniti opseg nadjačane metode u podklasi?

Da, možemo promijeniti opseg nadjačane metode u podklasi. Međutim, moramo primijetiti da ne možemo smanjiti dostupnost metode. Prilikom mijenjanja dostupnosti metode potrebno je voditi računa o sljedećoj točki.

  • Privatno se može promijeniti u zaštićeno, javno ili zadano.
  • Zaštićeno se može promijeniti u javno ili zadano.
  • Zadano se može promijeniti u javno.
  • Javnost će uvijek ostati javna.

85) Možemo li modificirati klauzulu throws metode superklase dok je nadjačavamo u podklasi?

Da, možemo modificirati klauzulu throws metode superklase dok je nadjačavamo u podklasi. Međutim, postoje neka pravila kojih se treba pridržavati tijekom nadjačavanja u slučaju rukovanja iznimkom.

  • Ako metoda superklase ne deklarira iznimku, metoda nadjačane podklase ne može deklarirati označenu iznimku, ali može deklarirati neprovjerenu iznimku.
  • Ako metoda nadklase deklarira iznimku, metoda nadjačana podklase može deklarirati istu, iznimku podklase ili bez iznimke, ali ne može deklarirati nadređenu iznimku.

86) Što je izlaz sljedećeg Java programa?

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

Izlaz

 Base class method called with integer a = 10 

Obrazloženje

Metoda() je preopterećena u klasi Base dok je izvedena u klasi Derived s tipom double kao parametrom. U pozivu metode prosljeđuje se cijeli broj.

87) Možete li imati virtualne funkcije u Javi?

Da, sve su funkcije u Javi virtualne prema zadanim postavkama.


88) Što je kovarijantni povratni tip?

Sada, od java5, moguće je nadjačati bilo koju metodu promjenom tipa povrata ako je tip povrata metode nadjačavanja podklase tip podklase. Poznat je kao kovarijantni povratni tip. Kovarijantni povratni tip specificira da povratni tip može varirati u istom smjeru kao i podklasa.

 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(); } } 
Testirajte sada
 Output: welcome to covariant return type 
Više detalja.

89) Što je izlaz sljedećeg Java programa?

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

Izlaz

 Derived method called ... 

Obrazloženje

Metoda osnovne klase, tj. baseMethod() nadjačana je u izvedenoj klasi. U Test klasi, referentna varijabla b (tipa Osnovna klasa) odnosi se na instancu Izvedene klase. Ovdje se polimorfizam vremena izvođenja postiže između klase Base i Derived. U vrijeme kompajliranja, prisutnost metode baseMethod provjerava se u osnovnoj klasi, ako je prisutna, tada je program kompajliran, inače će se prikazati greška prevoditelja. U ovom slučaju, baseMethod je prisutan u klasi Base; stoga je uspješno kompajliran. Međutim, tijekom izvođenja provjerava je li bazna metoda nadjačana izvedenom klasom, ako je tako, poziva se metoda izvedene klase, inače se poziva metoda osnovne klase. U ovom slučaju, Derived klasa nadjačava baseMethod; stoga se poziva metoda Izvedene klase.


Core Java - OOP koncepti: pitanja za intervju za konačnu ključnu riječ


90) Što je konačna varijabla?

U Javi se konačna varijabla koristi za ograničavanje korisnika u njezinom ažuriranju. Ako inicijaliziramo konačnu varijablu, ne možemo promijeniti njezinu vrijednost. Drugim riječima, možemo reći da se konačna varijabla jednom dodijeljena nekoj vrijednosti više nikada ne može promijeniti nakon toga. Konačna varijabla kojoj nije dodijeljena nijedna vrijednost može se dodijeliti samo kroz konstruktor klase.

konačna ključna riječ u Javi
 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 
Testirajte sada
 Output:Compile Time Error 
Više detalja.

91) Što je konačna metoda?

Ako bilo koju metodu promijenimo u konačnu metodu, ne možemo je nadjačati. Više detalja.

 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(); } } 
Testirajte sada
 Output:Compile Time Error 

92) Što je završni razred?

Ako bilo koju klasu učinimo konačnom, ne možemo je naslijediti ni u jednu podklasu.

 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(); } } 
Testirajte sada
 Output:Compile Time Error 
Više detalja.

93) Što je konačna prazna varijabla?

Konačna varijabla, koja nije inicijalizirana u vrijeme deklaracije, poznata je kao konačna prazna varijabla. Konačnu praznu varijablu ne možemo izravno inicijalizirati. Umjesto toga, moramo ga inicijalizirati pomoću konstruktora klase. Korisno je u slučaju kada korisnik ima neke podatke koje drugi ne smiju mijenjati, npr. PAN broj. Razmotrite sljedeći primjer:

 class Student{ int id; String name; final String PAN_CARD_NUMBER; ... } 
Više detalja.

94) Možemo li inicijalizirati konačnu praznu varijablu?

Da, ako nije statičan, možemo ga inicijalizirati u konstruktoru. Ako je statička prazna finalna varijabla, može se inicijalizirati samo u statičkom bloku. Više detalja.


95) Možete li glavnu metodu proglasiti konačnom?

Da, glavnu metodu možemo deklarirati kao public static final void main(String[] args){}.


96) Što je izlaz sljedećeg Java programa?

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

Izlaz

 20 

Obrazloženje

Budući da je i prazna konačna varijabla. Može se pokrenuti samo jednom. Inicijalizirali smo ga na 20. Stoga će 20 biti ispisan.


97) Što je izlaz sljedećeg Java programa?

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

Izlaz

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

Obrazloženje

Metoda getDetails() je konačna; stoga se ne može nadjačati u podklasi.


98) Možemo li konstruktor proglasiti konačnim?

Konstruktor se nikada ne može proglasiti konačnim jer se nikada ne nasljeđuje. Konstruktori nisu obične metode; stoga nema smisla konstruktore deklarirati kao konačne. Međutim, ako to pokušate učiniti, prevodilac će izbaciti pogrešku.


99) Možemo li sučelje proglasiti konačnim?

Ne, ne možemo deklarirati sučelje kao konačno jer sučelje mora biti implementirano od strane neke klase da bi pružilo svoju definiciju. Stoga nema smisla sučelje praviti finalnim. Međutim, ako to pokušate učiniti, prevodilac će prikazati pogrešku.


100) Koja je razlika između finalne metode i apstraktne metode?

Glavna razlika između konačne metode i apstraktne metode je u tome što apstraktna metoda ne može biti konačna jer ih trebamo nadjačati u podklasi da bismo dali njezinu definiciju.