logo

300 osnovnih vprašanj za intervju za Java | Komplet 1

90-odstotno zagotovilo vprašanj za razgovor

Obstaja seznam 300 ključnih vprašanj za razgovor o Javi. Če vam je bilo zastavljeno kakšno ključno vprašanje za razgovor o Javi, ga vljudno objavite v razdelku za vprašanja. Zagotavljamo vam, da boste tukaj dobili 90 % pogosto zastavljenih vprašanj in odgovorov na intervjuju.

Odgovori na vprašanja intervjuja Core Java so kratki in jedrnati. Osrednja vprašanja za razgovor o Javi so razvrščena v vprašanja za intervju o Osnovah Jave, vprašanja za intervju o OOP, vprašanja za intervju o ravnanju z nizi, vprašanja za intervju o večnitnosti, vprašanja za intervju o zbiranju, vprašanja za intervju o JDBC itd.


1 2 3 4 5

Core Java: Osnove Jave, vprašanja za intervju


1) Kaj je Java?

Java je na visoki ravni, objektno usmerjen , robusten, varen programski jezik, neodvisen od platforme, visoko zmogljiv, večniten in prenosljiv programski jezik. Razvil ga je James Gosling junija 1991. Znana je tudi kot platforma, saj ponuja lasten JRE in API.


2) Kakšne so razlike med C++ in Javo?

Razlike med C++ in Java sta podana v naslednji tabeli.

Primerjalni indeks C++Java
Neodvisno od platforme C++ je odvisen od platforme.Java je neodvisna od platforme.
Uporablja se predvsem za C++ se uporablja predvsem za sistemsko programiranje.Java se uporablja predvsem za programiranje aplikacij. Široko se uporablja v okenskih, spletnih, poslovnih in mobilnih aplikacijah.
Cilj oblikovanja C++ je bil zasnovan za programiranje sistemov in aplikacij. To je bil podaljšek Programski jezik C .Java je bila zasnovana in ustvarjena kot tolmač za tiskalniške sisteme, kasneje pa se je razširila kot podporno omrežno računalništvo. Zasnovan je bil s ciljem, da je enostaven za uporabo in dostopen širšemu občinstvu.
Pojdi do C++ podpira stavek goto.Java ne podpira stavka goto.
Večkratno dedovanje C++ podpira večkratno dedovanje.Java ne podpira večkratnega dedovanja prek razreda. To je mogoče doseči z vmesniki v Javi .
Preobremenitev operaterja C++ podpira preobremenitev operaterja .Java ne podpira preobremenitve operaterja.
Kazalci C++ podpira kazalce. Kazalec lahko napišete v C++.Java interno podpira kazalec. Vendar pa kazalnega programa ne morete napisati v Javi. To pomeni, da ima java omejeno podporo za kazalec v Javi.
Prevajalnik in tolmač C++ uporablja samo prevajalnik. C++ se prevede in izvaja s pomočjo prevajalnika, ki pretvori izvorno kodo v strojno kodo, tako da je C++ odvisen od platforme.Java uporablja tako prevajalnik kot tolmač. Izvorna koda Java se med prevajanjem pretvori v bajtno kodo. Tolmač izvede to bajtno kodo med izvajanjem in ustvari izhod. Java se interpretira, zato je neodvisna od platforme.
Klic po vrednosti in Klic po sklicu C++ podpira klic po vrednosti in klic po sklicu.Java podpira samo klic po vrednosti. V Javi ni klica s sklicevanjem.
Struktura in zveza C++ podpira strukture in unije.Java ne podpira struktur in zvez.
Podpora niti C++ nima vgrajene podpore za niti. Za podporo niti se zanaša na knjižnice tretjih oseb.Java ima vgrajeno nit podporo.
Komentar dokumentacije C++ ne podpira komentiranja dokumentacije.Java podpira dokumentacijski komentar (/** ... */) za ustvarjanje dokumentacije za izvorno kodo Java.
Virtualna ključna beseda C++ podpira virtualno ključno besedo, tako da se lahko odločimo, ali preglasimo funkcijo ali ne.Java nima virtualne ključne besede. Privzeto lahko preglasimo vse nestatične metode. Z drugimi besedami, nestatične metode so privzeto virtualne.
nepredznačeni desni premik >>> C++ ne podpira operatorja >>>.Java podpira operater nepredznačenega desnega premika >>>, ki zapolni ničlo na vrhu za negativna števila. Za pozitivna števila deluje enako kot operator >>.
Dedno drevo C++ vedno ustvari novo drevo dedovanja.Java vedno uporablja eno samo drevo dedovanja, ker so vsi razredi podrejeni razredu Object v Javi. Objektni razred je koren za dedovanje drevo v Javi.
Strojna oprema C++ je bližje strojni opremi.Java ni tako interaktivna s strojno opremo.
Objektno usmerjen C++ je objektno usmerjen jezik. Vendar pa v jeziku C enokorenska hierarhija ni mogoča.Java je tudi objektno usmerjen jezik. Vendar je v Javi vse (razen temeljnih tipov) predmet. To je enokorenska hierarhija, saj vse izhaja iz java.lang.Object.

3) Naštejte značilnosti programskega jezika Java.

V programskem jeziku Java so naslednje funkcije.

    Enostavno:Java se je enostavno naučiti. Sintaksa Jave temelji na C++, kar olajša pisanje programa v njej.
    Objektno usmerjen:Java sledi objektno usmerjeni paradigmi, ki nam omogoča, da našo kodo vzdržujemo kot kombinacijo različnih vrst objektov, ki vključuje podatke in vedenje.
    Prenosni:Java podpira pristop branja enkrat pisanja kjer koli. Program Java lahko izvajamo na vsakem stroju. Program Java (.java) se pretvori v bajtno kodo (.class), ki jo je mogoče enostavno zagnati na vsakem računalniku.
    Neodvisno od platforme:Java je programski jezik, neodvisen od platforme. Razlikuje se od drugih programskih jezikov, kot sta C in C++, ki potrebujejo platformo za izvajanje. Java prihaja s svojo platformo, na kateri se izvaja njena koda. Java ni odvisna od operacijskega sistema, ki ga je treba izvesti.
    Zavarovano:Java je zaščitena, ker ne uporablja eksplicitnih kazalcev. Java nudi tudi koncept ravnanja z bajtno kodo in izjemami, zaradi česar je bolj varna.
    Robusten:Java je močan programski jezik, saj uporablja močno upravljanje pomnilnika. Koncepti, kot so samodejno zbiranje smeti, obravnavanje izjem itd., ga naredijo bolj robustnega.
    Arhitektura nevtralna:Java je arhitekturno nevtralna, saj ni odvisna od arhitekture. V C se lahko velikost podatkovnih tipov razlikuje glede na arhitekturo (32-bitna ali 64-bitna), ki v Javi ne obstaja.
    Tolmačeno:Java uporablja tolmač Just-in-time (JIT) skupaj s prevajalnikom za izvajanje programa.
    Visokozmogljivo:Java je hitrejša od drugih tradicionalno interpretiranih programskih jezikov, ker je bajtna koda Java 'blizu' izvorni kodi. Še vedno je nekoliko počasnejši od prevedenega jezika (npr. C++).
    Večnitno:Napišemo lahko programe Java, ki se ukvarjajo z več nalogami hkrati z definiranjem več niti. Glavna prednost večnitnosti je, da ne zaseda pomnilnika za vsako nit. Deli skupno pomnilniško območje. Niti so pomembne za večpredstavnost, spletne aplikacije itd.
    Razdeljeno:Java je distribuirana, ker uporabnikom omogoča ustvarjanje porazdeljenih aplikacij v Javi. RMI in EJB se uporabljata za ustvarjanje porazdeljenih aplikacij. Ta funkcija Jave nam omogoča dostop do datotek s klicanjem metod s katerega koli računalnika v internetu.
    dinamično:Java je dinamičen jezik. Podpira dinamično nalaganje razredov. To pomeni, da se razredi naložijo na zahtevo. Podpira tudi funkcije iz svojih maternih jezikov, tj. C in C++.

4) Kaj razumete pod virtualnim strojem Java?

Java Virtual Machine je virtualni stroj, ki računalniku omogoča zagon programa Java. JVM deluje kot izvajalni mehanizem, ki pokliče glavno metodo, prisotno v kodi Java. JVM je specifikacija, ki mora biti implementirana v računalniški sistem. Kodo Jave prevede JVM v bajtno kodo, ki je strojno neodvisna in je blizu izvorni kodi.


5) Kakšna je razlika med JDK, JRE in JVM?

JVM

JVM je akronim za Java Virtual Machine; je abstraktni stroj, ki zagotavlja okolje izvajanja, v katerem se lahko izvaja bajtna koda Java. To je specifikacija, ki določa delovanje Java Virtual Machine. Njegovo implementacijo so zagotovili Oracle in druga podjetja. Njegova izvedba je znana kot JRE.

JVM so na voljo za številne platforme strojne in programske opreme (zato je JVM odvisen od platforme). Je primerek izvajalnega okolja, ki se ustvari, ko zaženemo razred Java. Obstajajo trije pojmi JVM: specifikacija, implementacija in primerek.

JRE

JRE je kratica za Java Runtime Environment. Je implementacija JVM. Java Runtime Environment je nabor programskih orodij, ki se uporabljajo za razvoj aplikacij Java. Uporablja se za zagotavljanje izvajalnega okolja. Je implementacija JVM. Fizično obstaja. Vsebuje nabor knjižnic in drugih datotek, ki jih JVM uporablja med izvajanjem.

JDK

JDK je akronim za Java Development Kit. Je okolje za razvoj programske opreme, ki se uporablja za razvoj aplikacij in programčkov Java. Fizično obstaja. Vsebuje razvojna orodja JRE +. JDK je implementacija katere koli od spodaj navedenih platform Java, ki jih je izdala Oracle Corporation:

  • Platforma Java Standard Edition
  • Platforma Java Enterprise Edition
  • Platforma Java Micro Edition
Več podrobnosti.

6) Koliko vrst pomnilniških območij dodeli JVM?

Veliko vrst:

    Področje razreda (metoda):Class Area shranjuje strukture posameznih razredov, kot so nabor konstant izvajalnega časa, polje, podatki metode in koda za metode.Kup:To je območje podatkov med izvajanjem, v katerem je pomnilnik dodeljen objektomSklad:Java Stack shranjuje okvirje. Vsebuje lokalne spremenljivke in delne rezultate ter igra vlogo pri priklicu in vračanju metode. Vsaka nit ima zasebni sklad JVM, ustvarjen istočasno kot nit. Nov okvir se ustvari vsakič, ko se prikliče metoda. Okvir je uničen, ko je priklic njegove metode končan.Register programskega števca:PC (programski števec) register vsebuje naslov ukaza navideznega stroja Java, ki se trenutno izvaja.Sklad izvornih metod:Vsebuje vse izvorne metode, uporabljene v aplikaciji.
Več podrobnosti.

7) Kaj je JIT prevajalnik?

Just-In-Time (JIT) prevajalnik: Uporablja se za izboljšanje delovanja. JIT prevaja dele bajtne kode, ki imajo istočasno podobno funkcionalnost, in tako skrajša čas, potreben za prevajanje. Tu se izraz prevajalnik nanaša na prevajalnik iz nabora navodil navideznega stroja Java (JVM) v nabor navodil določenega CPU.


8) Kaj je platforma?

Platforma je strojno ali programsko okolje, v katerem se izvaja del programske opreme. Obstajata dve vrsti platform, programska in strojna. Java ponuja platformo, ki temelji na programski opremi.


9) Katere so glavne razlike med platformo Java in drugimi platformami?

Obstajajo naslednje razlike med platformo Java in drugimi platformami.

  • Java je platforma, ki temelji na programski opremi, medtem ko so druge platforme lahko platforme strojne opreme ali platforme, ki temeljijo na programski opremi.
  • Java se izvaja na vrhu drugih platform strojne opreme, medtem ko imajo druge platforme lahko samo komponente strojne opreme.

10) Kaj daje Javi naravo 'napiši enkrat in zaženi kjer koli'?

Bajtna koda. Prevajalnik Java pretvori programe Java v datoteko razreda (Byte Code), ki je vmesni jezik med izvorno in strojno kodo. Ta bajtna koda ni specifična za platformo in jo je mogoče izvesti na katerem koli računalniku.


11) Kaj je nalagalnik razredov?

Classloader je podsistem JVM, ki se uporablja za nalaganje datotek razreda. Kadarkoli zaženemo program java, ga najprej naloži nalagalnik razredov. V Javi so trije vgrajeni nalagalniki razredov.

    Bootstrap ClassLoader: To je prvi nalagalnik razredov, ki je nadrazred nalagalnika razredov razširitve. Nalaga rt.jar datoteka, ki vsebuje vse datoteke razredov Java Standard Edition, kot so razredi paketov java.lang, razredi paketov java.net, razredi paketov java.util, razredi paketov java.io, razredi paketov java.sql itd.Razširitev ClassLoader: To je podrejeni nalagalnik razredov Bootstrap in nadrejeni nalagalnik razredov System classloader. Naloži datoteke jar, ki se nahajajo znotraj $JAVA_HOME/jre/lib/ext imenik.Sistem/aplikacija ClassLoader: To je podrejeni nalagalnik razredov razširitvenega nalagalnika razredov. Datoteke razreda naloži iz poti razreda. Privzeto je razredna pot nastavljena na trenutni imenik. Razredno pot lahko spremenite s stikalom '-cp' ali '-classpath'. Znan je tudi kot nalagalnik razredov aplikacij.

12) Ali je prazno ime datoteke .java veljavno ime izvorne datoteke?

Da, Java omogoča shranjevanje naše datoteke java z .java le, moramo ga prevesti s javac .java in teči mimo ime razreda java Vzemimo preprost primer:

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

ga sestavite s javac .java

teči mimo java A


13) Ali je v Javi ključna beseda delete, next, main, exit ali null?

št.


14) Če v ukazni vrstici ne vnesem nobenega argumenta, kakšna bo vrednost, shranjena v matriki String, posredovana metodi main(), prazna ali NULL?

Je prazna, vendar ni ničelna.


15) Kaj če napišem static public void namesto public static void?

Program se pravilno prevede in izvaja, ker vrstni red specifikatorjev v Javi ni pomemben.


16) Kakšna je privzeta vrednost lokalnih spremenljivk?

Lokalne spremenljivke niso inicializirane na nobeno privzeto vrednost, niti na primitive niti na reference objektov.


17) Kateri so različni specifikatorji dostopa v Javi?

V Javi so specifikatorji dostopa ključne besede, ki se uporabljajo za definiranje obsega dostopa metode, razreda ali spremenljivke. V Javi so spodaj navedeni štirje specifikatorji dostopa.

    JavnoDo razredov, metod ali spremenljivk, ki so definirane kot javne, je mogoče dostopati s katerim koli razredom ali metodo.ZaščitenoDo zaščitenega lahko dostopa razred istega paketa ali podrazred tega razreda ali znotraj istega razreda.PrivzetoPrivzete so dostopne samo znotraj paketa. Privzeto so vsi razredi, metode in spremenljivke privzetega obsega.ZasebnoDo zasebnega razreda, metod ali spremenljivk, definiranih kot zasebnih, je mogoče dostopati samo znotraj razreda.

18) Kaj je namen statičnih metod in spremenljivk?

Metode ali spremenljivke, definirane kot statične, si delijo vsi objekti razreda. Statika je del razreda in ne objekta. Statične spremenljivke so shranjene v območju razreda in za dostop do takih spremenljivk nam ni treba ustvariti objekta. Zato se statika uporablja v primeru, ko moramo definirati spremenljivke ali metode, ki so skupne vsem objektom razreda.

Na primer, v razredu, ki simulira zbiranje študentov na fakulteti, je ime fakultete skupni atribut za vse študente. Zato bo ime fakultete opredeljeno kot statična .


19) Kakšne so prednosti paketov v Javi?

Definiranje paketov v Javi ima različne prednosti.

  • Paketi se izogibajo navzkrižju imen.
  • Paket omogoča lažji nadzor dostopa.
  • Imamo lahko tudi skrite razrede, ki niso vidni zunaj in jih uporablja paket.
  • Lažje je poiskati povezane razrede.

20) Kakšen je rezultat naslednjega programa Java?

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

Rezultat zgornje kode bo

 30Javatpoint Javatpoint1020 

Razlaga

V prvem primeru se 10 in 20 obravnavata kot števili in ju seštejeta, da je 30. Zdaj se njuna vsota 30 obravnava kot niz in je povezana z nizom Javatpoint . Zato bo rezultat 30Javatpoint .

V drugem primeru je niz Javatpoint povezan z 10, da je niz Javatpoint10 ki bo nato združen z 20 Javatpoint1020 .


21) Kakšen je rezultat naslednjega programa Java?

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

Rezultat zgornje kode bo

 200Javatpoint Javatpoint200 

Razlaga

V prvem primeru bosta števili 10 in 20 najprej pomnoženi, nato pa bo rezultat 200 obravnavan kot niz in povezan z nizom Javatpoint za proizvodnjo rezultatov 200Javatpoint .

V drugem primeru bosta števili 10 in 20 najprej pomnoženi na 200, ker je prednost množenja višja od seštevanja. Rezultat 200 bo obravnavan kot niz in povezan z nizom Javatpoint ustvariti rezultat kot Javatpoint200 .


22) Kakšen je rezultat naslednjega programa Java?

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

Zgornja koda bo povzročila napako med prevajanjem, ker zanka for zahteva logično vrednost v drugem delu, mi pa zagotavljamo celoštevilsko vrednost, tj. 0.


Jedro Java – Koncepti OOP: Začetna vprašanja za intervju o OOP

Podanih je več kot 50 vprašanj za razgovor o OOP (objektno usmerjeno programiranje in sistem). Vendar pa so bila zaradi boljšega razumevanja razvrščena v številne razdelke, kot so vprašanja za razgovor o konstruktorju, vprašanja o statičnem intervjuju, vprašanja za intervju o dedovanju, vprašanje za intervju o abstrakciji, vprašanja za intervju o polimorfizmu itd.


23) Kaj je objektno usmerjena paradigma?

Je paradigma programiranja, ki temelji na objektih, ki imajo podatke in metode definirane v razredu, ki mu pripada. Objektno usmerjena paradigma želi vključiti prednosti modularnosti in ponovne uporabe. Objekti so primerki razredov, ki med seboj sodelujejo pri oblikovanju aplikacij in programov. Obstajajo naslednje značilnosti objektno usmerjene paradigme.

  • Sledi pristopu od spodaj navzgor pri oblikovanju programa.
  • Osredotočite se na podatke z metodami za delovanje na podatkih predmeta
  • Vključuje koncept, kot sta enkapsulacija in abstrakcija, ki skrije kompleksnost pred uporabnikom in prikaže le funkcionalnost.
  • Izvaja pristop v realnem času, kot je dedovanje, abstrakcija itd.
  • Primeri objektno usmerjene paradigme so C++, Simula, Smalltalk, Python, C# itd.

24) Kaj je predmet?

Objekt je entiteta v realnem času, ki ima neko stanje in obnašanje. V Javi je Object primerek razreda, ki ima spremenljivke primerka kot stanje objekta in metode kot obnašanje objekta. Objekt razreda je mogoče ustvariti z uporabo novo ključna beseda.


25) Kakšna je razlika med objektno usmerjenim programskim jezikom in objektno usmerjenim programskim jezikom?

Med objektno usmerjenim jezikom in objektno temelječim jezikom obstajajo naslednje osnovne razlike.

  • Objektno usmerjeni jeziki sledijo vsem konceptom OOP-jev, medtem ko objektno usmerjeni jezik ne sledi vsem konceptom OOP-jev, kot sta dedovanje in polimorfizem.
  • Objektno usmerjeni jeziki nimajo vgrajenih objektov, medtem ko imajo objektno usmerjeni jeziki vgrajene objekte, na primer JavaScript ima okenski objekt.
  • Primeri objektno usmerjenega programiranja so Java, C#, Smalltalk itd., medtem ko so primeri objektno usmerjenih jezikov JavaScript, VBScript itd.

26) Kakšna bo začetna vrednost reference objekta, ki je definirana kot spremenljivka primerka?

Vse reference objektov so v Javi inicializirane na nič.


Core Java - Koncepti OOP: Vprašanja za intervju s konstruktorjem


27) Kaj je konstruktor?

Konstruktor lahko definiramo kot posebno vrsto metode, ki se uporablja za inicializacijo stanja objekta. Prikliče se, ko je razred instanciran in je pomnilnik dodeljen objektu. Vsakič, ko je objekt ustvarjen z uporabo novo po ključni besedi se pokliče privzeti konstruktor razreda. Ime konstruktorja mora biti podobno imenu razreda. Konstruktor ne sme imeti eksplicitnega povratnega tipa.

Več podrobnosti.

28) Koliko tipov konstruktorjev se uporablja v Javi?

Glede na parametre, posredovane v konstruktorjih, obstajata v Javi dve vrsti konstruktorjev.

    Privzeti konstruktor:privzeti konstruktor je tisti, ki ne sprejme nobene vrednosti. Privzeti konstruktor se v glavnem uporablja za inicializacijo spremenljivke primerka s privzetimi vrednostmi. Uporablja se lahko tudi za izvajanje nekaterih uporabnih nalog pri ustvarjanju predmeta. Prevajalnik implicitno prikliče privzeti konstruktor, če v razredu ni definiranega konstruktorja.Parametrizirani konstruktor:Parametrizirani konstruktor je tisti, ki lahko inicializira spremenljivke primerka z danimi vrednostmi. Z drugimi besedami, lahko rečemo, da se konstruktorji, ki lahko sprejmejo argumente, imenujejo parametrirani konstruktorji.
Konstruktorji Java

29) Kaj je namen privzetega konstruktorja?

Namen privzetega konstruktorja je, da objektom dodeli privzeto vrednost. Prevajalnik java implicitno ustvari privzeti konstruktor, če v razredu ni konstruktorja.

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

Izhod:

 0 null 0 null 

Pojasnilo: V zgornjem razredu ne ustvarjate nobenega konstruktorja, zato vam prevajalnik ponudi privzeti konstruktor. Tukaj so 0 in ničelne vrednosti podane s privzetim konstruktorjem.

Java privzeti konstruktor
Več podrobnosti.

30) Ali konstruktor vrne kakšno vrednost?

leta: da, konstruktor implicitno vrne trenutni primerek razreda (s konstruktorjem ne morete uporabiti eksplicitnega vrnjenega tipa). Več podrobnosti.


31)Ali je konstruktor podedovan?

Ne, konstruktor ni podedovan.


32) Ali lahko narediš končnega konstruktorja?

Ne, konstruktor ne more biti dokončen.

preimenuj imenik v linuxu

33) Ali lahko preobremenimo konstruktorje?

Da, konstruktorje je mogoče preobremeniti s spremembo števila argumentov, ki jih sprejme konstruktor, ali s spremembo vrste podatkov parametrov. Razmislite o naslednjem primeru.

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

V zgornjem programu je Test konstruktorja preobremenjen z drugim konstruktorjem. Pri prvem klicu konstruktorja se pokliče konstruktor z enim argumentom in i bo inicializiran z vrednostjo 10. Toda pri drugem klicu konstruktorja se pokliče konstruktor z 2 argumentoma in i bo inicializiran z vrednostjo 15.


34) Kaj razumete pod konstruktorjem kopiranja v Javi?

V Javi ni konstruktorja kopiranja. Vendar pa lahko kopiramo vrednosti iz enega predmeta v drugega, kot je konstruktor kopiranja v C++.

Obstaja veliko načinov za kopiranje vrednosti enega predmeta v drugega v Javi. To so:

  • Po konstruktorju
  • Z dodeljevanjem vrednosti enega predmeta drugemu
  • Z metodo clone() razreda Object

V tem primeru bomo kopirali vrednosti enega predmeta v drugega z uporabo konstruktorja java.

 //Java program to initialize the values from one object to another class Student6{ int id; String name; //constructor to initialize integer and string Student6(int i,String n){ id = i; name = n; } //constructor to initialize another object Student6(Student6 s){ id = s.id; name =s.name; } void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student6 s1 = new Student6(111,'Karan'); Student6 s2 = new Student6(s1); s1.display(); s2.display(); } } 
Preizkusite zdaj

Izhod:

 111 Karan 111 Karan 

35) Kakšne so razlike med konstruktorji in metodami?

Med konstruktorji in metodami je veliko razlik. Podani so spodaj.

Konstruktor JavaJava metoda
Konstruktor se uporablja za inicializacijo stanja objekta.Metoda se uporablja za razkrivanje obnašanja predmeta.
Konstruktor ne sme imeti povratnega tipa.Metoda mora imeti povratni tip.
Konstruktor je priklican implicitno.Metoda se prikliče eksplicitno.
Prevajalnik Java ponuja privzeti konstruktor, če v razredu nimate nobenega konstruktorja.Metode v nobenem primeru ne zagotavlja prevajalnik.
Ime konstruktorja mora biti enako imenu razreda.Ime metode je lahko enako imenu razreda ali pa tudi ne.

Javanski konstruktorji proti metodam

36) Kakšen je rezultat naslednjega programa 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); } } 

Rezultat naslednjega programa je:

 a = 10 b = 15 

Tu se podatkovni tip spremenljivk a in b, tj. bajt, poviša v int in pokliče se prvi parametrizirani konstruktor z dvema celima parametroma.


37) Kakšen je rezultat naslednjega programa Java?

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

Izhod programa je 0, ker je spremenljivka i interno inicializirana na 0. Ker vemo, da se privzeti konstruktor kliče implicitno, če v razredu ni konstruktorja, se spremenljivka i inicializira na 0, ker v razredu ni konstruktorja.


38) Kakšen je rezultat naslednjega programa 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); } } 

Obstaja a napaka prevajalnika v programu, ker obstaja klic privzetega konstruktorja v glavni metodi, ki ni prisoten v razredu. Vendar pa je v razredu Test samo en parametriran konstruktor. Zato konstruktor implicitno ne prikliče nobenega privzetega konstruktorja.


Core Java - koncepti OOP: statična ključna beseda, vprašanja za intervju


39) Kaj je statična spremenljivka?

Statična spremenljivka se uporablja za sklicevanje na skupno lastnost vseh objektov (ki ni edinstvena za vsak objekt), npr. ime podjetja zaposlenih, ime fakultete študentov itd. Statična spremenljivka dobi pomnilnik samo enkrat v območju razreda na čas nalaganja razreda. Uporaba statične spremenljivke naredi vaš program bolj učinkovit pri pomnilniku (prihrani pomnilnik). Statična spremenljivka pripada razredu in 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(); } } 
Preizkusite zdaj
 Output:111 Karan ITS 222 Aryan ITS 

Več podrobnosti.

40) Kaj je statična metoda?

  • Statična metoda pripada razredu in ne objektu.
  • Za klic statičnih metod ni treba ustvariti objekta.
  • Statična metoda lahko dostopa in spreminja vrednost statične spremenljivke.
Več podrobnosti.

41) Kakšne so omejitve, ki veljajo za statične metode Java?

Za statične metode veljata dve glavni omejitvi.

  • Statična metoda ne more uporabiti nestatičnega podatkovnega člana ali neposredno klicati nestatične metode.
  • this in super ni mogoče uporabiti v statičnem kontekstu, ker nista statična.

42) Zakaj je glavna metoda statična?

Ker predmetu ni treba poklicati statične metode. Če naredimo glavno metodo nestatično, bo moral JVM najprej ustvariti svoj objekt in nato poklicati metodo main(), kar bo vodilo do dodatne dodelitve pomnilnika. Več podrobnosti.


43) Ali lahko preglasimo statične metode?

Ne, ne moremo preglasiti statičnih metod.

44) Kaj je statični blok?

Statični blok se uporablja za inicializacijo statičnega podatkovnega člana. Izvede se pred glavno metodo, v času nalaganja razreda.

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

Več podrobnosti.

45) Ali lahko izvajamo program brez metode main()?

Odgovor) Ne, z uporabo statičnega bloka je bilo mogoče pred JDK 1.7. Od JDK 1.7 dalje ni mogoče. Več podrobnosti.


46) Kaj, če je statični modifikator odstranjen iz podpisa glavne metode?

Program se sestavi. Vendar pa med izvajanjem vrže napako 'NoSuchMethodError.'


47) Kakšna je razlika med statično (razredno) metodo in metodo primerka?

statična ali razredna metodametoda primerka
1) Metoda, ki je deklarirana kot statična, je znana kot statična metoda.Metoda, ki ni deklarirana kot statična, je znana kot metoda primerka.
2) Ni nam treba ustvariti objektov za klic statičnih metod.Objekt je potreben za klic metod primerka.
3) Do nestatičnih (instančnih) članov ni mogoče neposredno dostopati v statičnem kontekstu (statična metoda, statični blok in statični ugnezdeni razred).Do statičnih in nestatičnih spremenljivk je mogoče dostopati v metodah primerka.
4) Na primer: public static int cube(int n){ return n*n*n;}Na primer: public void msg(){...}.

48) Ali lahko naredimo konstruktorje statične?

Kot vemo, statični kontekst (metoda, blok ali spremenljivka) pripada razredu, ne objektu. Ker se konstruktorji prikličejo šele, ko je objekt ustvarjen, nima smisla, da so konstruktorji statični. Če pa poskusite to storiti, bo prevajalnik prikazal napako prevajalnika.


49) Ali lahko naredimo abstraktne metode statične v Javi?

Če v Javi naredimo abstraktne metode statične, bodo postale del razreda in jih lahko neposredno pokličemo, kar je nepotrebno. Klicanje nedefinirane metode je popolnoma neuporabno, zato ni dovoljeno.


50) Ali lahko deklariramo statične spremenljivke in metode v abstraktnem razredu?

Da, statične spremenljivke in metode lahko deklariramo v abstraktni metodi. Ker vemo, da objektu ni treba omogočiti dostopa do statičnega konteksta, lahko dostopamo do statičnega konteksta, deklariranega znotraj abstraktnega razreda, z uporabo imena abstraktnega razreda. Razmislite o naslednjem primeru.

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

Izhod

 hi !! I am good !! i = 102 

Core Java – koncepti OOP: vprašanja za intervju o dedovanju


51) Kaj je to ključna beseda v Javi?

The to ključna beseda je referenčna spremenljivka, ki se nanaša na trenutni objekt. Obstajajo različne uporabe te ključne besede v Javi. Lahko se uporablja za sklicevanje na trenutne lastnosti razreda, kot so metode primerka, spremenljivke, konstruktorji itd. Lahko se posreduje tudi kot argument v metode ali konstruktorje. Vrne se lahko tudi iz metode kot trenutni primerek razreda.

java to ključno besedo
Več podrobnosti.

52) Kakšne so glavne uporabe te ključne besede?

Obstajajo naslednje uporabe to ključna beseda.

    tose lahko uporablja za sklicevanje na spremenljivko primerka trenutnega razreda.tose lahko uporablja za priklic trenutne metode razreda (implicitno)to ()lahko uporabite za priklic trenutnega konstruktorja razreda.tose lahko posreduje kot argument v klicu metode.tose lahko posreduje kot argument v klicu konstruktorja.tose lahko uporabi za vrnitev trenutnega primerka razreda iz metode.

53) Ali lahko dodelimo sklic na to spremenljivka?

Ne, tega ni mogoče dodeliti nobeni vrednosti, ker vedno kaže na trenutni predmet razreda in to je zadnja referenca v Javi. Če pa to poskusimo storiti, bo prikazana napaka prevajalnika. Razmislite o naslednjem primeru.

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

Izhod

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

54) Lahko to uporabljena ključna beseda za sklicevanje na statične člane?

Da, to ključno besedo je mogoče uporabiti za sklicevanje na statične člane, ker je to samo referenčna spremenljivka, ki se nanaša na trenutni predmet razreda. Vendar, kot vemo, dostop do statičnih spremenljivk prek objektov ni potreben, zato ni najboljša praksa, da to uporabite za napotitev na statične člane. Razmislite o naslednjem primeru.

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

Izhod

 10 

55) Kako se lahko izvede veriženje konstruktorja s to ključno besedo?

Veriženje konstruktorjev nam omogoča, da pokličemo enega konstruktorja iz drugega konstruktorja razreda glede na trenutni objekt razreda. To ključno besedo lahko uporabimo za izvedbo veriženja konstruktorja znotraj istega razreda. Razmislite o naslednjem primeru, ki ponazarja, kako lahko s to ključno besedo dosežemo veriženje konstruktorja.

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

Izhod

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

56) Kakšne so prednosti posredovanja tega v metodo namesto samega trenutnega predmeta razreda?

Kot vemo, se to nanaša na trenutni objekt razreda, zato mora biti podoben trenutnemu objektu razreda. Vendar pa sta lahko dve glavni prednosti posredovanja tega v metodo namesto trenutnega predmeta razreda.

  • to je končna spremenljivka. Zato tega ni mogoče dodeliti nobeni novi vrednosti, medtem ko trenutni objekt razreda morda ni končen in ga je mogoče spremeniti.
  • to je mogoče uporabiti v sinhroniziranem bloku.

57) Kaj je dedovanje?

Dedovanje je mehanizem, s katerim en objekt pridobi vse lastnosti in obnašanje drugega predmeta drugega razreda. Uporablja se za ponovno uporabnost kode in preglasitev metode. Ideja za dedovanjem v Javi je, da lahko ustvarite nove razrede, ki so zgrajeni na podlagi obstoječih razredov. Ko podedujete iz obstoječega razreda, lahko znova uporabite metode in polja nadrejenega razreda. Poleg tega lahko dodate nove metode in polja tudi v svoj trenutni razred. Dedovanje predstavlja odnos IS-A, ki je znan tudi kot odnos starš-otrok.

V Javi obstaja pet vrst dedovanja.

  • Enostopenjsko dedovanje
  • Večnivojsko dedovanje
  • Večkratno dedovanje
  • Hierarhično dedovanje
  • Hibridno dedovanje

Večkratno dedovanje ni podprto v Javi prek razreda.

Več podrobnosti.

58) Zakaj se v Javi uporablja dedovanje?

Spodaj so navedene različne prednosti uporabe dedovanja v Javi.

  • Dedovanje omogoča ponovno uporabo kode. Izpeljanemu razredu ni treba na novo definirati metode osnovnega razreda, razen če mora zagotoviti posebno izvedbo metode.
  • Polimorfizma med izvajanjem ni mogoče doseči brez uporabe dedovanja.
  • Z objekti v realnem času lahko simuliramo dedovanje razredov, zaradi česar so OOP bolj realistični.
  • Dedovanje omogoča skrivanje podatkov. Osnovni razred lahko skrije nekatere podatke iz izpeljanega razreda tako, da jih naredi zasebne.
  • Preglasitve metode ni mogoče doseči brez dedovanja. S preglasitvijo metode lahko damo specifično izvedbo neke osnovne metode, ki jo vsebuje osnovni razred.

59) Kateri razred je nadrazred za vse razrede?

Objektni razred je nadrazred vseh drugih razredov v Javi.


60) Zakaj večkratno dedovanje ni podprto v Javi?

Zaradi zmanjšanja zapletenosti in poenostavitve jezika večkratno dedovanje ni podprto v Javi. Razmislite o scenariju, kjer so A, B in C trije razredi. Razred C podeduje razreda A in B. Če imata razreda A in B isto metodo in jo kličete iz predmeta podrejenega razreda, bo priklic metode razreda A ali B dvoumen.

Ker so napake med prevajanjem boljše od napak med izvajanjem, Java upodobi napako med prevajanjem, če podedujete 2 razreda. Ne glede na to, ali uporabljate isto metodo ali drugačno, bo prišlo do napake pri prevajanju.

 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? } } 
Preizkusite zdaj
 Compile Time Error 

61) Kaj je združevanje?

Združevanje je mogoče definirati kot razmerje med dvema razredoma, kjer razred združevanja vsebuje sklic na razred, ki mu je v lasti. Združevanje je najbolje opisati kot a ima odnos. Na primer, skupni razred Zaposleni, ki ima različna polja, kot so starost, ime in plača, vsebuje tudi objekt razreda Naslov, ki ima različna polja, kot so Naslov-vrstica 1, Mesto, Država in koda PIN. Z drugimi besedami, lahko rečemo, da ima Employee (razred) objekt razreda Address. Razmislite o naslednjem primeru.

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

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

Izhod

 111 varun gzb UP india 112 arun gno UP india 

62) Kaj je sestava?

Zadrževanje sklicevanja na razred znotraj nekega drugega razreda je znano kot kompozicija. Ko objekt vsebuje drug objekt, če vsebovani objekt ne more obstajati brez obstoja vsebniškega objekta, se to imenuje sestava. Z drugimi besedami, lahko rečemo, da je sestava poseben primer združevanja, ki predstavlja močnejši odnos med dvema objektoma. Primer: razred vsebuje študente. Študent ne more obstajati brez razreda. Med razredom in učenci obstaja skladnost.


63) Kakšna je razlika med združevanjem in sestavo?

Združevanje predstavlja šibko razmerje, medtem ko sestava predstavlja močno razmerje. Na primer, kolo ima indikator (agregat), kolo pa ima motor (sestava).


64) Zakaj Java ne podpira kazalcev?

Kazalec je spremenljivka, ki se nanaša na pomnilniški naslov. V Javi se ne uporabljajo, ker niso varni (nezaščiteni) in zapleteni za razumevanje.


65) Kaj je super v Javi?

The super ključna beseda v Javi je referenčna spremenljivka, ki se uporablja za sklicevanje na neposredni nadrejeni objekt razreda. Kadar koli ustvarite primerek podrazreda, je implicitno ustvarjen primerek nadrejenega razreda, na katerega se sklicuje superreferenčna spremenljivka. Super() v konstruktorju razreda implicitno pokliče prevajalnik, če ni super ali tega.

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

Izhod:

 animal is created dog is created 
Več podrobnosti.

66) Kako se lahko izvede veriženje konstruktorja z uporabo ključne besede 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); } } 

Izhod

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

67) Kakšne so glavne uporabe ključne besede super?

Obstajajo naslednje uporabe ključne besede super.

  • super se lahko uporablja za sklicevanje na neposredno spremenljivko primerka nadrejenega razreda.
  • super se lahko uporablja za priklic metode neposrednega nadrejenega razreda.
  • super() lahko uporabite za priklic konstruktorja neposrednega nadrejenega razreda.

68) Kakšne so razlike med to in super ključno besedo?

Med to in super ključno besedo obstajajo naslednje razlike.

  • Ključna beseda super vedno kaže na kontekste nadrejenega razreda, medtem ko ta ključna beseda vedno kaže na kontekst trenutnega razreda.
  • Ključna beseda super se uporablja predvsem za inicializacijo spremenljivk osnovnega razreda znotraj konstruktorja izpeljanega razreda, medtem ko se ta ključna beseda uporablja predvsem za razlikovanje med lokalnimi spremenljivkami in spremenljivkami primerkov, ko je posredovana v konstruktorju razreda.
  • Super in this morata biti prvi stavek znotraj konstruktorja, sicer bo prevajalnik vrgel napako.

69) Kakšen je rezultat naslednjega programa 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(); } } 

Izhod

 Person class constructor called Employee class constructor called 

Razlaga

Prevajalnik implicitno prikliče super(), če noben super() ali this() ni eksplicitno vključen v konstruktor izpeljanega razreda. Zato se v tem primeru najprej pokliče konstruktor razreda Oseba, nato pa se pokliče konstruktor razreda Zaposleni.


70) Ali lahko uporabite this() in super() oba v konstruktorju?

Ne, ker morata biti this() in super() prvi stavek v konstruktorju razreda.

primer:

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

Izhod:

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

71)Kaj je kloniranje objektov?

Kloniranje objekta se uporablja za ustvarjanje natančne kopije predmeta. Metoda clone() razreda Object se uporablja za kloniranje predmeta. The java.lang.Cloneable vmesnik mora implementirati razred, katerega klon objekta želimo ustvariti. Če ne implementiramo vmesnika Cloneable, metoda clone() ustvari CloneNotSupportedException.

 protected Object clone() throws CloneNotSupportedException 
Več podrobnosti.

Core Java – OOP koncepti: vprašanja za intervju, ki preobremenijo metode


72) Kaj je preobremenitev metode?

Preobremenitev metode je tehnika polimorfizma, ki nam omogoča ustvarjanje več metod z enakim imenom, vendar različnim podpisom. Preobremenitev metode lahko dosežemo na dva načina.

  • S spreminjanjem števila argumentov
  • S spreminjanjem vrste podatkov argumentov

Preobremenitev metod poveča berljivost programa. Preobremenitev metod se izvede, da se program hitro ugotovi.

Več podrobnosti.

73) Zakaj preobremenitev metode ni mogoča s spremembo vrste povratka v Javi?

V Javi preobremenitev metode ni mogoča s spreminjanjem vrnjenega tipa programa zaradi izogibanja dvoumnosti.

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

Izhod:

 Compile Time Error: method add(int, int) is already defined in class Adder 
Več podrobnosti.

74) Ali lahko metode preobremenimo tako, da jih naredimo statične?

Ne, metod ne moremo preobremeniti samo z uporabo statične ključne besede zanje (število parametrov in vrst je enako). Razmislite o naslednjem primeru.

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

Izhod

 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) Ali lahko preobremenimo metodo main()?

Da, z uporabo preobremenitve metod imamo lahko v programu Java poljubno število glavnih metod.

Več podrobnosti.

76) Kaj je preobremenitev metode s promocijo tipa?

S promocijo tipa je preobremenitev metode, mislimo, da je en podatkovni tip mogoče implicitno povišati v drugega, če ni najdenega natančnega ujemanja.

Preobremenitev metode Java s promocijo vrste

Kot je prikazano v zgornjem diagramu, lahko bajt povišate v short, int, long, float ali double. Podatkovni tip short se lahko poviša v int, long, float ali double. Podatkovni tip char se lahko poviša v int, long, float ali double in tako naprej. Razmislite o naslednjem primeru.

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

Izhod

 40 60 

77) Kakšen je rezultat naslednjega programa 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 } } 

Izhod

 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 

Razlaga

Obstajata dve metodi, definirani z istim imenom, tj. vsota. Prva metoda sprejema tip integer in long, medtem ko druga metoda sprejema tip long in integer. Prenesena parametra sta a = 20, b = 20. Ne moremo vedeti, katera metoda bo poklicana, ker ni omenjenega jasnega razlikovanja med celoštevilskim dobesedom in dolgim ​​dobesedom. To je primer dvoumnosti. Zato bo prevajalnik vrgel napako.


Core Java – OOP koncepti: Metoda, ki preglasi vprašanja za intervju


78) Kaj je preglasitev metode:

Če podrazred zagotavlja specifično izvedbo metode, ki jo že zagotavlja njegov nadrejeni razred, je to znano kot preglasitev metode. Uporablja se za izvajalni polimorfizem in za implementacijo metod vmesnika.

Pravila za preglasitev metode

  • Metoda mora imeti isto ime kot v nadrejenem razredu.
  • Metoda mora imeti enak podpis kot v nadrejenem razredu.
  • Dva razreda morata imeti med seboj razmerje IS-A.
Več podrobnosti.


79) Ali lahko preglasimo statično metodo?

Ne, statične metode ne morete preglasiti, ker je del razreda, ne objekta.


80) Zakaj ne moremo preglasiti statične metode?

To je zato, ker je statična metoda del razreda in je vezana na razred, medtem ko je metoda primerka vezana na objekt in statična pridobi pomnilnik v območju razreda, primerek pa dobi pomnilnik na kupu.


81) Ali lahko preglasimo preobremenjeno metodo?

ja


82) Razlika med preobremenitvijo in preglasitvijo metode.

Preobremenitev metodePreglasitev metode
1) Preobremenitev metode poveča berljivost programa.Preglasitev metode zagotavlja posebno izvedbo metode, ki jo že zagotavlja njen nadrazred.
2) V razredu pride do preobremenitve metode.Preglasitev metode se pojavi v dveh razredih, ki imata med seboj razmerje IS-A.
3) V tem primeru morajo biti parametri drugačni.V tem primeru morajo biti parametri enaki.

83) Ali lahko preglasimo zasebne metode?

Ne, zasebnih metod ne moremo preglasiti, ker je obseg zasebnih metod omejen na razred in do njih ne moremo dostopati zunaj razreda.


84) Ali lahko spremenimo obseg preglasene metode v podrazredu?

Da, lahko spremenimo obseg preglasene metode v podrazredu. Vendar moramo upoštevati, da ne moremo zmanjšati dostopnosti metode. Pri spreminjanju dostopnosti metode je treba upoštevati naslednjo točko.

  • Zasebno lahko spremenite v zaščiteno, javno ali privzeto.
  • Zaščiteno lahko spremenite v javno ali privzeto.
  • Privzeto lahko spremenite v javno.
  • Javnost bo vedno ostala javna.

85) Ali lahko spremenimo člen vrženja metode nadrazreda, medtem ko ga preglasimo v podrazredu?

Da, klavzulo o vrženju metode nadrazreda lahko spremenimo, medtem ko jo preglasimo v podrazredu. Vendar pa obstaja nekaj pravil, ki jih je treba upoštevati pri preglasitvi v primeru obravnave izjeme.

  • Če metoda nadrazreda ne prijavi izjeme, preglasena metoda podrazreda ne more prijaviti preverjene izjeme, lahko pa razglasi nepreverjeno izjemo.
  • Če metoda nadrazreda izjavi izjemo, lahko preglasena metoda podrazreda izjavi isto, izjemo podrazreda ali nobene izjeme, ne more pa deklarirati nadrejene izjeme.

86) Kakšen je rezultat naslednjega programa 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); } } 

Izhod

 Base class method called with integer a = 10 

Razlaga

Metoda() je preobremenjena v razredu Base, medtem ko je izpeljana v razredu Izpeljano z dvojnim tipom kot parametrom. Pri klicu metode se posreduje celo število.

87) Ali lahko imate virtualne funkcije v Javi?

Da, vse funkcije v Javi so privzeto navidezne.


88) Kaj je kovariantni povratni tip?

Zdaj, od java5 dalje, je mogoče preglasiti katero koli metodo s spremembo vrnjenega tipa, če je vrnjeni tip metode preglasitve podrazreda tip podrazreda. Znan je kot kovariantni povratni tip. Kovariantni povratni tip določa, da se lahko vrnjeni tip spreminja v isto smer kot podrazred.

 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(); } } 
Preizkusite zdaj
 Output: welcome to covariant return type 
Več podrobnosti.

89) Kakšen je rezultat naslednjega programa 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(); } } 

Izhod

 Derived method called ... 

Razlaga

Metoda osnovnega razreda, tj. baseMethod(), je preglasena v izpeljanem razredu. V Testnem razredu se referenčna spremenljivka b (tipa Osnovni razred) nanaša na primerek Izpeljanega razreda. Tu je polimorfizem izvajalnega okolja dosežen med razredom Base in Derived. V času prevajanja se preveri prisotnost metode baseMethod v osnovnem razredu. Če je prisotna, se program prevede, sicer bo prikazana napaka prevajalnika. V tem primeru je baseMethod prisoten v razredu Base; zato je uspešno preveden. Vendar pa med izvajanjem preveri, ali je baseMethod preglasil izpeljani razred, če je tako, se pokliče metoda izpeljanega razreda, sicer se pokliče metoda osnovnega razreda. V tem primeru razred Derived preglasi baseMethod; zato se pokliče metoda izpeljanega razreda.


Core Java - koncepti OOP: končna ključna beseda, vprašanja za intervju


90) Kaj je končna spremenljivka?

V Javi se končna spremenljivka uporablja za omejitev uporabnika pri posodabljanju. Če inicializiramo končno spremenljivko, ne moremo spremeniti njene vrednosti. Z drugimi besedami, lahko rečemo, da končne spremenljivke, ko je enkrat dodeljena vrednosti, ni več mogoče več spremeniti. Končno spremenljivko, ki ni dodeljena nobeni vrednosti, je mogoče dodeliti samo prek konstruktorja razreda.

končna ključna beseda v 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 
Preizkusite zdaj
 Output:Compile Time Error 
Več podrobnosti.

91) Kakšna je končna metoda?

Če katero koli metodo spremenimo v končno metodo, je ne moremo preglasiti. Več podrobnosti.

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

92) Kaj je končni razred?

Če kateri koli razred naredimo končnega, ga ne moremo podedovati v nobenem od podrazredov.

 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(); } } 
Preizkusite zdaj
 Output:Compile Time Error 
Več podrobnosti.

93) Kaj je končna prazna spremenljivka?

Končna spremenljivka, ki ni inicializirana v času deklaracije, je znana kot končna prazna spremenljivka. Končne prazne spremenljivke ne moremo neposredno inicializirati. Namesto tega ga moramo inicializirati z uporabo konstruktorja razreda. Uporaben je v primeru, ko ima uporabnik nekaj podatkov, ki jih drugi ne smejo spreminjati, na primer številko PAN. Razmislite o naslednjem primeru:

 class Student{ int id; String name; final String PAN_CARD_NUMBER; ... } 
Več podrobnosti.

94) Ali lahko inicializiramo končno prazno spremenljivko?

Da, če ni statičen, ga lahko inicializiramo v konstruktorju. Če je statična prazna končna spremenljivka, jo je mogoče inicializirati samo v statičnem bloku. Več podrobnosti.


95) Ali lahko glavno metodo razglasite za končno?

Da, glavno metodo lahko razglasimo kot public static final void main(String[] args){}.


96) Kakšen je rezultat naslednjega programa Java?

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

Izhod

 20 

Razlaga

Ker je i prazna končna spremenljivka. Inicializirati ga je mogoče samo enkrat. Inicializirali smo ga na 20. Zato bo natisnjeno 20.


97) Kakšen je rezultat naslednjega programa 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(); } } 

Izhod

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

Razlaga

Metoda getDetails() je končna; zato ga ni mogoče preglasiti v podrazredu.


98) Ali lahko konstruktor razglasimo za končnega?

Konstruktorja ni mogoče nikoli razglasiti za končnega, ker ni nikoli podedovan. Konstruktorji niso navadne metode; zato ni smiselno razglasiti konstruktorjev za končne. Če pa poskusite to storiti, bo prevajalnik izdal napako.


99) Ali lahko vmesnik razglasimo za končnega?

Ne, vmesnika ne moremo razglasiti za končnega, ker mora vmesnik implementirati nek razred, da zagotovi svojo definicijo. Zato nima smisla narediti vmesnika končnega. Če pa poskusite to storiti, bo prevajalnik prikazal napako.


100) Kakšna je razlika med končno in abstraktno metodo?

Glavna razlika med končno metodo in abstraktno metodo je v tem, da abstraktna metoda ne more biti končna, saj ju moramo v podrazredu preglasiti, da podamo njeno definicijo.