logo

300 Core Java-intervjuspørsmål | Sett 1

90 % sikkerhet for intervjuspørsmål

Det er listen over 300 kjerne Java-intervjuspørsmål. Hvis det er noen sentrale Java-intervjuspørsmål som har blitt stilt til deg, vennligst legg det ut i spørsmålsseksjonen. Vi forsikrer at du her vil få de 90 % vanlige intervjuspørsmålene og svarene.

Svarene på Core Java-intervjuspørsmålene er korte og konkrete. Kjernespørsmålene for Java-intervjuer er kategorisert i Grunnleggende om Java-intervjuspørsmål, OOPs-intervjuspørsmål, String Handling-intervjuspørsmål, Multithreading-intervjuspørsmål, samlingsintervjuspørsmål, JDBC-intervjuspørsmål, etc.


1 2 3 4 5

Core Java: Grunnleggende om Java-intervjuspørsmål


1) Hva er Java?

Java er det høye nivået, objekt orientert , robust, sikkert programmeringsspråk, plattformuavhengig, høy ytelse, multithreaded og bærbart programmeringsspråk. Den ble utviklet av James Gosling i juni 1991. Den kan også bli kjent som plattformen da den gir sin egen JRE og API.


2) Hva er forskjellene mellom C++ og Java?

Forskjellene mellom C++ og Java er gitt i tabellen nedenfor.

Sammenligningsindeks C++Java
Plattformuavhengig C++ er plattformavhengig.Java er plattformuavhengig.
Hovedsakelig brukt til C++ brukes hovedsakelig til systemprogrammering.Java brukes hovedsakelig til applikasjonsprogrammering. Den er mye brukt i vindus-, nettbaserte, bedrifts- og mobilapplikasjoner.
Designmål C++ ble designet for programmering av systemer og applikasjoner. Det var en forlengelse av C programmeringsspråk .Java ble designet og opprettet som en tolk for utskriftssystemer, men ble senere utvidet som en støttenettverksdatabehandling. Den ble designet med et mål om å være enkel å bruke og tilgjengelig for et bredere publikum.
Gå til C++ støtter goto-setningen.Java støtter ikke goto-setningen.
Multippel arv C++ støtter multippel arv.Java støtter ikke multippel arv gjennom klassen. Det kan oppnås ved grensesnitt i java .
Operatør overbelastning C++ støtter operatør overbelastning .Java støtter ikke operatøroverbelastning.
Pekere C++ støtter pekere. Du kan skrive pekerprogram i C++.Java støtter peker internt. Du kan imidlertid ikke skrive pekerprogrammet i java. Det betyr at java har begrenset pekerstøtte i Java.
Kompilator og tolk C++ bruker kun kompilator. C++ er kompilert og kjørt ved hjelp av kompilatoren som konverterer kildekoden til maskinkode, så C++ er plattformavhengig.Java bruker både kompilator og tolk. Java-kildekoden konverteres til bytekode på kompileringstidspunktet. Tolkeren kjører denne bytekoden under kjøring og produserer utdata. Java tolkes derfor er det plattformuavhengig.
Ring etter verdi og Ring etter referanse C++ støtter både call by value og call by reference.Java støtter kun anrop etter verdi. Det er ingen anrop ved referanse i java.
Struktur og forening C++ støtter strukturer og fagforeninger.Java støtter ikke strukturer og fagforeninger.
Trådstøtte C++ har ikke innebygd støtte for tråder. Den er avhengig av tredjepartsbiblioteker for trådstøtte.Java har innebygd tråd Brukerstøtte.
Dokumentasjonskommentar C++ støtter ikke dokumentasjonskommentarer.Java støtter dokumentasjonskommentar (/** ... */) for å lage dokumentasjon for java-kildekode.
Virtuelt nøkkelord C++ støtter virtuelt nøkkelord slik at vi kan bestemme om vi skal overstyre en funksjon eller ikke.Java har ikke noe virtuelt nøkkelord. Vi kan overstyre alle ikke-statiske metoder som standard. Med andre ord, ikke-statiske metoder er virtuelle som standard.
usignert høyreskift >>> C++ støtter ikke >>> operatør.Java støtter usignert høyreskift >>>-operator som fyller null øverst for de negative tallene. For positive tall fungerer det på samme måte som >> operator.
Arvetre C++ oppretter alltid et nytt arvetre.Java bruker alltid et enkelt arvetre fordi alle klasser er underordnede objektklassen i java. Objektklassen er roten til arv tre i java.
Maskinvare C++ er nærmere maskinvare.Java er ikke så interaktivt med maskinvare.
Objekt orientert C++ er et objektorientert språk. I C-språk er imidlertid enkeltrothierarki ikke mulig.Java er også en objekt orientert Språk. Imidlertid er alt (unntatt grunnleggende typer) et objekt i Java. Det er et enkelt rothierarki da alt blir avledet fra java.lang.Object.

3) Liste funksjonene til Java-programmeringsspråket.

Det er følgende funksjoner i Java Programming Language.

    Enkel:Java er lett å lære. Syntaksen til Java er basert på C++ som gjør det lettere å skrive programmet i den.
    Objekt orientert:Java følger det objektorienterte paradigmet som lar oss opprettholde koden vår som kombinasjonen av forskjellige typer objekter som inkluderer både data og atferd.
    Bærbar:Java støtter les-en gang-skriv-hvor som helst tilnærming. Vi kan kjøre Java-programmet på hver maskin. Java-program (.java) konverteres til bytekode (.class) som enkelt kan kjøres på hver maskin.
    Plattformuavhengig:Java er et plattformuavhengig programmeringsspråk. Det er forskjellig fra andre programmeringsspråk som C og C++ som trenger en plattform for å bli utført. Java kommer med sin plattform som koden kjøres på. Java er ikke avhengig av operativsystemet som skal kjøres.
    Sikret:Java er sikret fordi den ikke bruker eksplisitte pekere. Java gir også konseptet bytekode og unntakshåndtering som gjør det mer sikret.
    Robust:Java er et sterkt programmeringsspråk siden det bruker sterk minnebehandling. Konseptene som Automatisk søppelinnsamling, Unntakshåndtering osv. gjør den mer robust.
    Arkitektur nøytral:Java er arkitektonisk nøytral da den ikke er avhengig av arkitekturen. I C kan størrelsen på datatyper variere i henhold til arkitekturen (32 bit eller 64 bit) som ikke finnes i Java.
    Tolket:Java bruker Just-in-time (JIT)-tolken sammen med kompilatoren for programkjøringen.
    Høy ytelse:Java er raskere enn andre tradisjonelle tolkede programmeringsspråk fordi Java-bytekode er 'nær' innfødt kode. Det er fortsatt litt tregere enn et kompilert språk (f.eks. C++).
    Flertrådet:Vi kan skrive Java-programmer som håndterer mange oppgaver samtidig ved å definere flere tråder. Den største fordelen med multi-threading er at den ikke opptar minne for hver tråd. Den deler et felles minneområde. Tråder er viktige for multimedia, webapplikasjoner osv.
    Distribuert:Java distribueres fordi det gjør det lettere for brukere å lage distribuerte applikasjoner i Java. RMI og EJB brukes til å lage distribuerte applikasjoner. Denne funksjonen i Java gjør oss i stand til å få tilgang til filer ved å ringe metodene fra hvilken som helst maskin på internett.
    Dynamisk:Java er et dynamisk språk. Den støtter dynamisk lasting av klasser. Det betyr at klasser lastes inn på forespørsel. Den støtter også funksjoner fra morsmålene, det vil si C og C++.

4) Hva forstår du med Java Virtual Machine?

Java Virtual Machine er en virtuell maskin som gjør at datamaskinen kan kjøre Java-programmet. JVM fungerer som en kjøretidsmotor som kaller hovedmetoden som finnes i Java-koden. JVM er spesifikasjonen som må implementeres i datasystemet. Java-koden er kompilert av JVM for å være en bytekode som er maskinuavhengig og nær den opprinnelige koden.


5) Hva er forskjellen mellom JDK, JRE og JVM?

JVM

JVM er et akronym for Java Virtual Machine; det er en abstrakt maskin som gir kjøretidsmiljøet der Java-bytekode kan kjøres. Det er en spesifikasjon som spesifiserer hvordan Java Virtual Machine fungerer. Implementeringen er levert av Oracle og andre selskaper. Implementeringen er kjent som JRE.

JVM-er er tilgjengelige for mange maskinvare- og programvareplattformer (så JVM er plattformavhengig). Det er en runtime-forekomst som opprettes når vi kjører Java-klassen. Det er tre forestillinger om JVM: spesifikasjon, implementering og instans.

JRE

JRE står for Java Runtime Environment. Det er implementeringen av JVM. Java Runtime Environment er et sett med programvareverktøy som brukes til å utvikle Java-applikasjoner. Den brukes til å gi kjøretidsmiljøet. Det er implementeringen av JVM. Den eksisterer fysisk. Den inneholder et sett med biblioteker + andre filer som JVM bruker under kjøring.

JDK

JDK er et akronym for Java Development Kit. Det er et programvareutviklingsmiljø som brukes til å utvikle Java-applikasjoner og appleter. Det eksisterer fysisk. Den inneholder JRE + utviklingsverktøy. JDK er en implementering av en av de nedenfor gitte Java-plattformene utgitt av Oracle Corporation:

  • Standard Edition Java-plattform
  • Enterprise Edition Java-plattform
  • Micro Edition Java-plattform
Mer informasjon.

6) Hvor mange typer minneområder er tildelt av JVM?

Mange typer:

    Klasse(metode) område:Klasseområde lagrer strukturer per klasse som kjøretidskonstantpoolen, felt, metodedata og koden for metoder.haug:Det er kjøretidsdataområdet der minnet er allokert til objekteneStable:Java Stack lagrer rammer. Den inneholder lokale variabler og delresultater, og spiller en rolle i metodeanrop og retur. Hver tråd har en privat JVM-stabel, opprettet samtidig med tråden. En ny ramme opprettes hver gang en metode påkalles. En ramme blir ødelagt når metodeanropet er fullført.Programtellerregister:PC-registeret (programteller) inneholder adressen til den virtuelle Java-maskininstruksjonen som kjøres for øyeblikket.Innebygd metodestabel:Den inneholder alle de opprinnelige metodene som brukes i applikasjonen.
Mer informasjon.

7) Hva er JIT-kompilator?

Just-In-Time (JIT) kompilator: Den brukes til å forbedre ytelsen. JIT kompilerer deler av bytekoden som har lignende funksjonalitet på samme tid, og reduserer dermed tiden som trengs for kompilering. Her refererer begrepet kompilator til en oversetter fra instruksjonssettet til en virtuell Java-maskin (JVM) til instruksjonssettet til en spesifikk CPU.


8) Hva er plattformen?

En plattform er maskinvare- eller programvaremiljøet der et stykke programvare kjøres. Det finnes to typer plattformer, programvarebasert og maskinvarebasert. Java gir den programvarebaserte plattformen.


9) Hva er hovedforskjellene mellom Java-plattformen og andre plattformer?

Det er følgende forskjeller mellom Java-plattformen og andre plattformer.

  • Java er den programvarebaserte plattformen, mens andre plattformer kan være maskinvareplattformer eller programvarebaserte plattformer.
  • Java kjøres på toppen av andre maskinvareplattformer, mens andre plattformer bare kan ha maskinvarekomponentene.

10) Hva gir Java sin 'skrive én gang og løp hvor som helst' natur?

Bytekoden. Java-kompilatoren konverterer Java-programmene til klassefilen (Byte Code) som er mellomspråket mellom kildekode og maskinkode. Denne bytekoden er ikke plattformspesifikk og kan kjøres på hvilken som helst datamaskin.


11) Hva er classloader?

Classloader er et undersystem av JVM som brukes til å laste klassefiler. Hver gang vi kjører java-programmet, lastes det først av klasselasteren. Det er tre innebygde klasselastere i Java.

    Bootstrap ClassLoader: Dette er den første klasselasteren som er superklassen til Extension classloader. Den laster inn rt.jar fil som inneholder alle klassefiler av Java Standard Edition som java.lang-pakkeklasser, java.net-pakkeklasser, java.util-pakkeklasser, java.io-pakkeklasser, java.sql-pakkeklasser, etc.Utvidelse ClassLoader: Dette er den underordnede klasselasteren til Bootstrap og den overordnede klasselasteren til System classloader. Den laster jar-filene som ligger inne $JAVA_HOME/jre/lib/ext katalog.System/applikasjon ClassLoader: Dette er den underordnede klasselasteren til Extension classloader. Den laster klassefilene fra klassebanen. Som standard er klassebanen satt til gjeldende katalog. Du kan endre klassebanen ved å bruke '-cp' eller '-classpath'-bryteren. Det er også kjent som Application classloader.

12) Er Empty .java-filnavn et gyldig kildefilnavn?

Ja, Java tillater å lagre java-filen vår ved å .java bare, vi trenger å kompilere den ved javac .java og løpe forbi java klassenavn La oss ta et enkelt eksempel:

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

kompiler den av javac .java

kjøre den forbi java A


13) Er delete, next, main, exit eller null nøkkelord i java?

Nei.


14) Hvis jeg ikke oppgir noen argumenter på kommandolinjen, hva vil verdien som er lagret i String-matrisen sendes til main()-metoden, tom eller NULL?

Den er tom, men ikke null.


15) Hva om jeg skriver statisk offentlig tomrom i stedet for offentlig statisk tomrom?

Programmet kompilerer og kjører riktig fordi rekkefølgen på spesifikasjoner spiller ingen rolle i Java.


16) Hva er standardverdien til de lokale variablene?

De lokale variablene initialiseres ikke til noen standardverdi, verken primitiver eller objektreferanser.


17) Hva er de forskjellige tilgangsspesifikasjonene i Java?

I Java er tilgangspesifikasjoner nøkkelordene som brukes til å definere tilgangsomfanget til metoden, klassen eller en variabel. I Java er det fire tilgangsspesifikasjoner gitt nedenfor.

    OffentligKlassene, metodene eller variablene som er definert som offentlige, kan nås av enhver klasse eller metode.BeskyttetProtected kan nås av klassen til den samme pakken, eller av underklassen til denne klassen, eller innenfor samme klasse.MisligholdeStandard er kun tilgjengelig i pakken. Som standard er alle klassene, metodene og variablene av standardomfang.PrivatDen private klassen, metodene eller variablene som er definert som private kan bare nås innenfor klassen.

18) Hva er hensikten med statiske metoder og variabler?

Metodene eller variablene definert som statiske deles mellom alle objektene i klassen. Det statiske er delen av klassen og ikke av objektet. De statiske variablene lagres i klasseområdet, og vi trenger ikke lage objektet for å få tilgang til slike variabler. Derfor brukes statisk i tilfellet, hvor vi må definere variabler eller metoder som er felles for alle objektene i klassen.

For eksempel, i klassen som simulerer samlingen av studentene på en høyskole, er navnet på høyskolen fellesattributtet for alle studentene. Derfor vil høyskolenavnet bli definert som statisk .


19) Hva er fordelene med pakker i Java?

Det er ulike fordeler med å definere pakker i Java.

  • Pakker unngår navnesammenstøt.
  • Pakken gir enklere tilgangskontroll.
  • Vi kan også ha de skjulte klassene som ikke er synlige utenfor og brukes av pakken.
  • Det er lettere å finne de relaterte klassene.

20) Hva er resultatet av følgende Java-program?

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

Utgangen av koden ovenfor vil være

 30Javatpoint Javatpoint1020 

Forklaring

I det første tilfellet behandles 10 og 20 som tall og legges til 30. Nå blir summen deres 30 behandlet som strengen og koblet sammen med strengen Javatpoint . Derfor vil utgangen være 30 Javapoint .

I det andre tilfellet er strengen Javatpoint koblet sammen med 10 for å være strengen Javatpoint10 som da vil bli sammenkoblet med 20 å være Javatpoint1020 .


21) Hva er resultatet av følgende Java-program?

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

Utgangen av koden ovenfor vil være

 200Javatpoint Javatpoint200 

Forklaring

I det første tilfellet vil tallene 10 og 20 multipliseres først, og deretter behandles resultatet 200 som strengen og settes sammen med strengen Javatpoint å produsere produksjonen 200 Javapoint .

I det andre tilfellet vil tallene 10 og 20 multipliseres først til 200 fordi multiplikasjonens forrang er høyere enn addisjon. Resultatet 200 vil bli behandlet som strengen og koblet sammen med strengen Javatpoint å produsere utgangen som Javatpoint200 .


22) Hva er resultatet av følgende Java-program?

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

Koden ovenfor vil gi kompileringstidsfeilen fordi for-løkken krever en boolsk verdi i den andre delen, og vi gir en heltallsverdi, dvs. 0.


Core Java - OOPs-konsepter: Innledende OOP-intervjuspørsmål

Det er gitt mer enn 50 OOPs (Object-Oriented Programming and System) intervjuspørsmål. Imidlertid har de blitt kategorisert i mange seksjoner som konstruktørintervjuspørsmål, statiske intervjuspørsmål, arveintervjuspørsmål, Abstraksjonsintervjuspørsmål, Polymorfismeintervjuspørsmål, etc. for bedre forståelse.


23) Hva er objektorientert paradigme?

Det er et programmeringsparadigme basert på objekter som har data og metoder definert i klassen den tilhører. Objektorientert paradigme tar sikte på å inkorporere fordelene med modularitet og gjenbrukbarhet. Objekter er forekomster av klasser som samhandler med hverandre for å designe applikasjoner og programmer. Det er følgende trekk ved det objektorienterte paradigmet.

  • Følger nedenfra og opp tilnærmingen i programdesign.
  • Fokuser på data med metoder for å operere på objektets data
  • Inkluderer konseptet som Encapsulation og abstraksjon som skjuler kompleksiteten for brukeren og viser kun funksjonalitet.
  • Implementerer sanntidstilnærmingen som arv, abstraksjon, etc.
  • Eksemplene på det objektorienterte paradigmet er C++, Simula, Smalltalk, Python, C#, etc.

24) Hva er en gjenstand?

Objektet er sanntidsenheten som har en viss tilstand og oppførsel. I Java er Object en forekomst av klassen som har forekomstvariablene som tilstanden til objektet og metodene som oppførselen til objektet. Objektet til en klasse kan opprettes ved å bruke ny søkeord.


25) Hva er forskjellen mellom et objektorientert programmeringsspråk og objektbasert programmeringsspråk?

Det er følgende grunnleggende forskjeller mellom det objektorienterte språket og det objektbaserte språket.

  • Objektorienterte språk følger alle konseptene til OOPs, mens det objektbaserte språket ikke følger alle konseptene til OOPs som arv og polymorfisme.
  • Objektorienterte språk har ikke de innebygde objektene, mens objektbaserte språk har de innebygde objektene, for eksempel JavaScript har et vindusobjekt.
  • Eksempler på objektorientert programmering er Java, C#, Smalltalk osv. mens eksemplene på objektbaserte språk er JavaScript, VBScript osv.

26) Hva blir startverdien til en objektreferanse som er definert som en forekomstvariabel?

Alle objektreferanser initialiseres til null i Java.


Core Java - OOPs-konsepter: Konstruktørintervjuspørsmål


27) Hva er konstruktøren?

Konstruktøren kan defineres som den spesielle typen metode som brukes til å initialisere tilstanden til et objekt. Den påkalles når klassen instansieres, og minnet tildeles objektet. Hver gang opprettes et objekt ved hjelp av ny nøkkelord, kalles standardkonstruktøren for klassen. Navnet på konstruktøren må være lik klassenavnet. Konstruktøren må ikke ha en eksplisitt returtype.

Mer informasjon.

28) Hvor mange typer konstruktører brukes i Java?

Basert på parameterne som sendes i konstruktørene, er det to typer konstruktører i Java.

    Standard konstruktør:standard konstruktør er den som ikke aksepterer noen verdi. Standardkonstruktøren brukes hovedsakelig til å initialisere forekomstvariabelen med standardverdiene. Den kan også brukes til å utføre en nyttig oppgave ved objektoppretting. En standardkonstruktør påkalles implisitt av kompilatoren hvis det ikke er noen konstruktør definert i klassen.Parameterisert konstruktør:Den parameteriserte konstruktøren er den som kan initialisere instansvariablene med de gitte verdiene. Med andre ord kan vi si at konstruktørene som kan akseptere argumentene kalles parameteriserte konstruktører.
Java-konstruktører

29) Hva er hensikten med en standardkonstruktør?

Formålet med standardkonstruktøren er å tilordne standardverdien til objektene. Java-kompilatoren oppretter en standardkonstruktør implisitt hvis det ikke er noen konstruktør i klassen.

 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(); } } 
Test det nå

Produksjon:

 0 null 0 null 

Forklaring: I klassen ovenfor oppretter du ingen konstruktør, så kompilatoren gir deg en standard konstruktør. Her er 0- og nullverdier gitt som standardkonstruktør.

Java standard konstruktør
Mer informasjon.

30) Returnerer konstruktøren noen verdi?

År: ja, konstruktøren returnerer implisitt gjeldende forekomst av klassen (Du kan ikke bruke en eksplisitt returtype med konstruktøren). Mer informasjon.


31) Er konstruktør arvet?

Nei, konstruktøren er ikke arvet.


32) Kan du lage en konstruktørfinale?

Nei, konstruktøren kan ikke være endelig.

hva betyr dette xd

33) Kan vi overbelaste konstruktørene?

Ja, konstruktørene kan bli overbelastet ved å endre antall argumenter akseptert av konstruktøren eller ved å endre datatypen til parameterne. Tenk på følgende eksempel.

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

I programmet ovenfor er konstruktørtesten overbelastet med en annen konstruktør. I det første kallet til konstruktøren kalles konstruktøren med ett argument, og i vil bli initialisert med verdien 10. I det andre kallet til konstruktøren kalles imidlertid konstruktøren med de 2 argumentene, og i vil bli initialisert med verdien 15.


34) Hva forstår du med kopikonstruktør i Java?

Det er ingen kopikonstruktør i java. Imidlertid kan vi kopiere verdiene fra ett objekt til et annet som kopikonstruktør i C++.

Det er mange måter å kopiere verdiene til ett objekt til et annet i java. De er:

  • Av konstruktør
  • Ved å tilordne verdiene til ett objekt til et annet
  • Ved clone()-metoden av Object-klassen

I dette eksemplet skal vi kopiere verdiene til ett objekt til et annet ved hjelp av java-konstruktør.

 //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(); } } 
Test det nå

Produksjon:

 111 Karan 111 Karan 

35) Hva er forskjellene mellom konstruktørene og metodene?

Det er mange forskjeller mellom konstruktører og metoder. De er gitt nedenfor.

Java-konstruktørJava-metoden
En konstruktør brukes til å initialisere tilstanden til et objekt.En metode brukes til å avsløre oppførselen til et objekt.
En konstruktør må ikke ha en returtype.En metode må ha en returtype.
Konstruktøren påkalles implisitt.Metoden påberopes eksplisitt.
Java-kompilatoren gir en standard konstruktør hvis du ikke har noen konstruktør i en klasse.Metoden er ikke gitt av kompilatoren i alle fall.
Konstruktørnavnet må være det samme som klassenavnet.Metodenavnet kan være det samme som klassenavnet.

Java-konstruktører vs metoder

36) Hva er resultatet av følgende Java-program?

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

Utgangen av følgende program er:

 a = 10 b = 15 

Her blir datatypen til variablene a og b, dvs. byte, forfremmet til int, og den første parameteriserte konstruktøren med de to heltallsparametrene kalles.


37) Hva er resultatet av følgende Java-program?

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

Utgangen til programmet er 0 fordi variabelen i er initialisert til 0 internt. Siden vi vet at en standardkonstruktør påkalles implisitt hvis det ikke er noen konstruktør i klassen, initialiseres variabelen i til 0 siden det ikke er noen konstruktør i klassen.


38) Hva er resultatet av følgende Java-program?

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

Det er en kompilatorfeil i programmet fordi det er et kall til standardkonstruktøren i hovedmetoden som ikke finnes i klassen. Imidlertid er det bare én parameterisert konstruktør i klassen Test. Derfor påkalles ingen standardkonstruktør implisitt av konstruktøren.


Core Java - OOPs Concepts: statisk nøkkelord Intervjuspørsmål


39) Hva er den statiske variabelen?

Den statiske variabelen brukes til å referere til felleseiendommen til alle objekter (som ikke er unik for hvert objekt), f.eks. firmanavnet på ansatte, høyskolenavnet på studentene osv. Statisk variabel får minne bare én gang i klasseområdet kl. tidspunktet for lasting av klassen. Å bruke en statisk variabel gjør programmet mer minneeffektivt (det sparer minne). Statisk variabel tilhører klassen i stedet for objektet.

 //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(); } } 
Test det nå
 Output:111 Karan ITS 222 Aryan ITS 

Mer informasjon.

40) Hva er den statiske metoden?

  • En statisk metode tilhører klassen i stedet for objektet.
  • Det er ikke nødvendig å lage objektet for å kalle de statiske metodene.
  • En statisk metode kan få tilgang til og endre verdien av den statiske variabelen.
Mer informasjon.

41) Hva er begrensningene som gjelder for de statiske Java-metodene?

To hovedbegrensninger brukes på de statiske metodene.

  • Den statiske metoden kan ikke bruke et ikke-statisk datamedlem eller kalle den ikke-statiske metoden direkte.
  • dette og super kan ikke brukes i statisk sammenheng da de er ikke-statiske.

42) Hvorfor er hovedmetoden statisk?

Fordi objektet ikke er pålagt å kalle den statiske metoden. Hvis vi gjør hovedmetoden ikke-statisk, må JVM først lage objektet sitt og deretter kalle main()-metoden som vil føre til den ekstra minneallokeringen. Mer informasjon.


43) Kan vi overstyre de statiske metodene?

Nei, vi kan ikke overstyre statiske metoder.

44) Hva er den statiske blokken?

Statisk blokk brukes til å initialisere det statiske datamedlemmet. Den utføres før hovedmetoden, på tidspunktet for klasseinnlasting.

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

Mer informasjon.

45) Kan vi kjøre et program uten main()-metoden?

Svar) Nei, det var mulig før JDK 1.7 ved å bruke den statiske blokken. Siden JDK 1.7 er det ikke mulig. Mer informasjon.


46) Hva om den statiske modifikatoren fjernes fra signaturen til hovedmetoden?

Program kompilerer. Men under kjøring gir den feilen 'NoSuchMethodError'.


47) Hva er forskjellen mellom statisk (klasse) metode og instansmetode?

statisk eller klassemetodeinstansmetoden
1) En metode som er erklært som statisk er kjent som den statiske metoden.En metode som ikke er deklarert som statisk er kjent som instansmetoden.
2) Vi trenger ikke lage objektene for å kalle de statiske metodene.Objektet kreves for å kalle instansmetodene.
3) Ikke-statiske (forekomst) medlemmer kan ikke nås direkte i den statiske konteksten (statisk metode, statisk blokk og statisk nestet klasse).Både statiske og ikke-statiske variabler kan nås i instansmetoder.
4)For eksempel: offentlig statisk int kube(int n){ return n*n*n;}For eksempel: public void msg(){...}.

48) Kan vi gjøre konstruktører statiske?

Som vi vet at den statiske konteksten (metode, blokk eller variabel) tilhører klassen, ikke objektet. Siden konstruktører bare påkalles når objektet er opprettet, er det ingen mening å gjøre konstruktørene statiske. Men hvis du prøver å gjøre det, vil kompilatoren vise kompilatorfeilen.


49) Kan vi gjøre de abstrakte metodene statiske i Java?

I Java, hvis vi gjør de abstrakte metodene statiske, vil det bli en del av klassen, og vi kan direkte kalle det som er unødvendig. Å kalle en udefinert metode er helt ubrukelig, derfor er det ikke tillatt.


50) Kan vi deklarere de statiske variablene og metodene i en abstrakt klasse?

Ja, vi kan deklarere statiske variabler og metoder i en abstrakt metode. Siden vi vet at det ikke er noe krav om å få objektet til å få tilgang til den statiske konteksten, kan vi derfor få tilgang til den statiske konteksten som er erklært inne i den abstrakte klassen ved å bruke navnet på den abstrakte klassen. Tenk på følgende eksempel.

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

Produksjon

 hi !! I am good !! i = 102 

Core Java - OOPs Concepts: Arvintervjuspørsmål


51) Hva er dette nøkkelord i java?

De dette nøkkelord er en referansevariabel som refererer til det gjeldende objektet. Det er forskjellige bruksområder for dette søkeordet i Java. Den kan brukes til å referere til gjeldende klasseegenskaper som forekomstmetoder, variabel, konstruktører osv. Den kan også sendes som et argument inn i metodene eller konstruktørene. Den kan også returneres fra metoden som gjeldende klasseforekomst.

java dette søkeordet
Mer informasjon.

52) Hva er hovedbruken av dette søkeordet?

Det er følgende bruksområder dette søkeord.

    dettekan brukes til å referere til gjeldende klasseforekomstvariabel.dettekan brukes til å påkalle gjeldende klassemetode (implisitt)dette()kan brukes til å starte gjeldende klassekonstruktør.dettekan sendes som et argument i metodekallet.dettekan sendes som et argument i konstruktørkallet.dettekan brukes til å returnere gjeldende klasseforekomst fra metoden.

53) Kan vi tildele referansen til dette variabel?

Nei, dette kan ikke tilordnes noen verdi fordi det alltid peker til det gjeldende klasseobjektet og dette er den endelige referansen i Java. Men hvis vi prøver å gjøre det, vil kompilatorfeilen vises. Tenk på følgende eksempel.

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

Produksjon

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

54) Kan dette søkeord brukes til å referere statiske medlemmer?

Ja, det er mulig å bruke dette nøkkelordet til å referere til statiske medlemmer fordi dette bare er en referansevariabel som refererer til det gjeldende klasseobjektet. Men som vi vet det, er det unødvendig å få tilgang til statiske variabler gjennom objekter, derfor er det ikke den beste praksisen å bruke dette til å referere til statiske medlemmer. Tenk på følgende eksempel.

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

Produksjon

 10 

55) Hvordan kan konstruktørkjeding gjøres ved å bruke dette søkeordet?

Konstruktørkjeding gjør oss i stand til å kalle en konstruktør fra en annen konstruktør av klassen med hensyn til det gjeldende klasseobjektet. Vi kan bruke dette nøkkelordet til å utføre konstruktørkjeding innenfor samme klasse. Tenk på følgende eksempel som illustrerer hvordan vi kan bruke dette nøkkelordet for å oppnå konstruktørkjeding.

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

Produksjon

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

56) Hva er fordelene med å overføre dette til en metode i stedet for selve det nåværende klasseobjektet?

Som vi vet, at dette refererer til det gjeldende klasseobjektet, må det derfor være likt det gjeldende klasseobjektet. Det kan imidlertid være to hovedfordeler ved å overføre dette til en metode i stedet for det gjeldende klasseobjektet.

  • dette er en siste variabel. Derfor kan dette ikke tilordnes noen ny verdi, mens det gjeldende klasseobjektet kanskje ikke er endelig og kan endres.
  • dette kan brukes i den synkroniserte blokken.

57) Hva er arven?

Arv er en mekanisme der ett objekt får alle egenskapene og oppførselen til et annet objekt i en annen klasse. Den brukes for gjenbruk av kode og metodeoverstyring. Ideen bak arv i Java er at du kan lage nye klasser som er bygget på eksisterende klasser. Når du arver fra en eksisterende klasse, kan du gjenbruke metoder og felt i overordnet klasse. Dessuten kan du legge til nye metoder og felt i din nåværende klasse også. Arv representerer IS-A-forholdet som også er kjent som et foreldre-barn-forhold.

Det er fem typer arv i Java.

  • Enkeltnivå arv
  • Arv på flere nivåer
  • Multippel arv
  • Hierarkisk arv
  • Hybrid arv

Multippel arv støttes ikke i Java gjennom klasse.

Mer informasjon.

58) Hvorfor brukes arv i Java?

Det er forskjellige fordeler ved å bruke arv i Java som er gitt nedenfor.

  • Arv gir kodegjenbrukbarhet. Den avledede klassen trenger ikke å omdefinere metoden for basisklassen med mindre den trenger å gi den spesifikke implementeringen av metoden.
  • Runtime polymorfisme kan ikke oppnås uten bruk av arv.
  • Vi kan simulere arven til klasser med sanntidsobjektene som gjør OOPs mer realistiske.
  • Arv gir dataskjul. Basisklassen kan skjule noen data fra den avledede klassen ved å gjøre den privat.
  • Metodeoverstyring kan ikke oppnås uten arv. Ved metodeoverstyring kan vi gi en spesifikk implementering av en eller annen grunnleggende metode som finnes i basisklassen.

59) Hvilken klasse er superklassen for alle klassene?

Objektklassen er superklassen til alle andre klasser i Java.


60) Hvorfor støttes ikke multippel arv i java?

For å redusere kompleksiteten og forenkle språket, støttes ikke multippel arv i java. Tenk på et scenario der A, B og C er tre klasser. C-klassen arver A- og B-klassene. Hvis A- og B-klassene har samme metode og du kaller det fra et barneklasseobjekt, vil det være tvetydighet å kalle metoden til A- eller B-klassen.

Siden kompileringstidsfeilene er bedre enn kjøretidsfeilene, gjengir Java kompileringstidsfeil hvis du arver 2 klasser. Så enten du har samme metode eller forskjellig, vil det være en kompileringstidsfeil.

 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? } } 
Test det nå
 Compile Time Error 

61) Hva er aggregering?

Aggregasjon kan defineres som forholdet mellom to klasser der den aggregerte klassen inneholder en referanse til klassen den eier. Aggregasjon beskrives best som en har en forhold. For eksempel inneholder den samlede klassen Ansatt som har forskjellige felt som alder, navn og lønn også et objekt av adresseklassen som har forskjellige felt som adresselinje 1, by, stat og pinkode. Med andre ord kan vi si at Ansatt (klasse) har et objekt av Adresseklasse. Tenk på følgende eksempel.

Adresse.java

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

Employee.java

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

Produksjon

 111 varun gzb UP india 112 arun gno UP india 

62) Hva er komposisjon?

Å holde referansen til en klasse i en annen klasse er kjent som komposisjon. Når et objekt inneholder det andre objektet, hvis det inneholdte objektet ikke kan eksistere uten eksistensen av et beholderobjekt, kalles det komposisjon. Med andre ord kan vi si at komposisjon er det spesielle tilfellet av aggregering som representerer et sterkere forhold mellom to objekter. Eksempel: En klasse inneholder elever. En elev kan ikke eksistere uten en klasse. Det er sammensetning mellom klasse og elever.


63) Hva er forskjellen mellom aggregering og sammensetning?

Aggregasjon representerer det svake forholdet, mens sammensetning representerer det sterke forholdet. For eksempel har sykkelen en indikator (aggregation), men sykkelen har en motor (sammensetning).


64) Hvorfor støtter ikke Java pekere?

Pekeren er en variabel som refererer til minneadressen. De brukes ikke i Java fordi de er usikre (usikret) og komplekse å forstå.


65) Hva er super i java?

De super nøkkelord i Java er en referansevariabel som brukes til å referere til det umiddelbare overordnede klasseobjektet. Hver gang du oppretter forekomsten av underklassen, opprettes en forekomst av den overordnede klassen implisitt som refereres til med en superreferansevariabel. Super() kalles i klassekonstruktøren implisitt av kompilatoren hvis det ikke er noen super eller dette.

 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(); } } 
Test det nå

Produksjon:

 animal is created dog is created 
Mer informasjon.

66) Hvordan kan konstruktørkjeding gjøres ved å bruke supernøkkelordet?

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

Produksjon

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

67) Hva er hovedbruken av supersøkeordet?

Det er følgende bruksområder for super nøkkelord.

  • super kan brukes til å referere til den umiddelbare overordnede klasseforekomstvariabelen.
  • super kan brukes til å påkalle den umiddelbare overordnede klassemetoden.
  • super() kan brukes til å påkalle umiddelbar overordnet klassekonstruktør.

68) Hva er forskjellene mellom dette og supersøkeordet?

Det er følgende forskjeller mellom dette og supersøkeordet.

  • Supernøkkelordet peker alltid til foreldreklassens kontekster, mens dette nøkkelordet alltid peker til gjeldende klassekontekst.
  • Supernøkkelordet brukes først og fremst for å initialisere basisklassevariablene i den avledede klassekonstruktøren, mens dette nøkkelordet primært brukes til å skille mellom lokale og instansvariabler når de sendes i klassekonstruktøren.
  • Superen og dette må være den første setningen i konstruktøren, ellers vil kompilatoren gi en feil.

69) Hva er resultatet av følgende Java-program?

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

Produksjon

 Person class constructor called Employee class constructor called 

Forklaring

Super() blir implisitt påkalt av kompilatoren hvis ingen super() eller this() er inkludert eksplisitt i den avledede klassekonstruktøren. Derfor, i dette tilfellet, kalles Person-klassekonstruktøren først, og deretter kalles Ansatt-klassekonstruktøren.


70) Kan du bruke både denne() og super() i en konstruktør?

Nei, fordi denne() og super() må være den første setningen i klassekonstruktøren.

Eksempel:

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

Produksjon:

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

71) Hva er objektkloning?

Objektkloningen brukes til å lage den nøyaktige kopien av et objekt. Clone()-metoden til Object-klassen brukes til å klone et objekt. De java.lang.Klonbar grensesnittet må implementeres av klassen hvis objektklone vi ønsker å lage. Hvis vi ikke implementerer Cloneable-grensesnitt, genererer clone()-metoden CloneNotSupportedException.

 protected Object clone() throws CloneNotSupportedException 
Mer informasjon.

Core Java - OOPs-konsepter: Metodeoverbelastning av intervjuspørsmål


72) Hva er metodeoverbelastning?

Metodeoverbelastning er polymorfismeteknikken som lar oss lage flere metoder med samme navn, men forskjellig signatur. Vi kan oppnå metodeoverbelastning på to måter.

  • Ved å endre antall argumenter
  • Ved å endre datatypen for argumenter

Metodeoverbelastning øker lesbarheten til programmet. Metodeoverbelastning utføres for å finne ut programmet raskt.

Mer informasjon.

73) Hvorfor er metodeoverbelastning ikke mulig ved å endre returtype i java?

I Java er metodeoverbelastning ikke mulig ved å endre returtypen til programmet på grunn av tvetydigheten.

 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 }} 
Test det nå

Produksjon:

 Compile Time Error: method add(int, int) is already defined in class Adder 
Mer informasjon.

74) Kan vi overbelaste metodene ved å gjøre dem statiske?

Nei, vi kan ikke overbelaste metodene ved å bare bruke det statiske nøkkelordet på dem (antall parametere og typer er de samme). Tenk på følgende eksempel.

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

Produksjon

 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) Kan vi overbelaste main()-metoden?

Ja, vi kan ha et hvilket som helst antall hovedmetoder i et Java-program ved å bruke metodeoverbelastning.

Mer informasjon.

76) Hva er metodeoverbelastning med typepromotering?

Med Type-promotering er metodeoverbelastning, vi mener at én datatype kan forfremmes til en annen implisitt hvis ingen eksakt samsvar blir funnet.

Java-metodeoverbelastning med typepromotering

Som vist i diagrammet ovenfor, kan byten forfremmes til kort, int, lang, flytende eller dobbel. Den korte datatypen kan forfremmes til int, long, float eller double. Char datatype kan promoteres til int, long, float eller double og så videre. Tenk på følgende eksempel.

 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); } } 
Test det nå

Produksjon

 40 60 

77) Hva er resultatet av følgende Java-program?

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

Produksjon

 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 

Forklaring

Det er to metoder definert med samme navn, dvs. sum. Den første metoden aksepterer heltalls- og langtypen, mens den andre metoden aksepterer lang- og heltallstypen. Parameteren passerte som er a = 20, b = 20. Vi kan ikke si hvilken metode som vil bli kalt da det ikke er noen klar differensiering nevnt mellom heltallsliteral og lang literal. Dette er tilfelle av tvetydighet. Derfor vil kompilatoren gi en feil.


Core Java - OOPs-konsepter: Metode som overstyrer intervjuspørsmål


78) Hva er metodeoverstyring:

Hvis en underklasse gir en spesifikk implementering av en metode som allerede er levert av dens overordnede klasse, er den kjent som metodeoverstyring. Den brukes for runtime polymorfisme og for å implementere grensesnittmetodene.

Regler for metodeoverstyring

  • Metoden må ha samme navn som i overordnet klasse.
  • Metoden må ha samme signatur som i overordnet klasse.
  • To klasser må ha et IS-A-forhold mellom seg.
Mer informasjon.


79) Kan vi overstyre den statiske metoden?

Nei, du kan ikke overstyre den statiske metoden fordi de er en del av klassen, ikke objektet.


80) Hvorfor kan vi ikke overstyre statisk metode?

Det er fordi den statiske metoden er delen av klassen, og den er bundet til klassen, mens instansmetoden er bundet til objektet, og statisk får minne i klasseområdet, og instans får minne i en haug.


81) Kan vi overstyre den overbelastede metoden?

Ja.


82) Forskjellen mellom metode Overbelastning og Overstyring.

Metode OverbelastningMetodeoverstyring
1) Metodeoverbelastning øker lesbarheten til programmet.Metodeoverstyring gir den spesifikke implementeringen av metoden som allerede er levert av superklassen.
2) Metodeoverbelastning skjer innenfor klassen.Metodeoverstyring skjer i to klasser som har IS-A-forhold mellom seg.
3) I dette tilfellet må parametrene være forskjellige.I dette tilfellet må parametrene være de samme.

83) Kan vi overstyre de private metodene?

Nei, vi kan ikke overstyre de private metodene fordi omfanget av private metoder er begrenset til klassen og vi kan ikke få tilgang til dem utenfor klassen.


84) Kan vi endre omfanget av den overstyrte metoden i underklassen?

Ja, vi kan endre omfanget av den overstyrte metoden i underklassen. Vi må imidlertid merke oss at vi ikke kan redusere tilgjengeligheten til metoden. Følgende punkt må ivaretas ved endring av tilgjengeligheten til metoden.

  • Det private kan endres til beskyttet, offentlig eller standard.
  • Den beskyttede kan endres til offentlig eller standard.
  • Standarden kan endres til offentlig.
  • Offentligheten vil alltid forbli offentlig.

85) Kan vi modifisere throws-klausulen til superklassemetoden mens vi overstyrer den i underklassen?

Ja, vi kan endre throws-klausulen til superklassemetoden mens vi overstyrer den i underklassen. Det er imidlertid noen regler som skal følges mens de overstyrer i tilfelle unntakshåndtering.

  • Hvis superklassemetoden ikke erklærer et unntak, kan ikke underklasseoverstyrt metode erklære det sjekkede unntaket, men det kan erklære det ukontrollerte unntaket.
  • Hvis superklassemetoden erklærer et unntak, kan underklasseoverstyrt metode erklære samme, underklasseunntak eller intet unntak, men kan ikke erklære overordnet unntak.

86) Hva er resultatet av følgende Java-program?

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

Produksjon

 Base class method called with integer a = 10 

Forklaring

Metoden() er overbelastet i klassen Base, mens den er avledet i klassen Avledet med dobbelttypen som parameter. I metodekallet sendes heltallet.

87) Kan du ha virtuelle funksjoner i Java?

Ja, alle funksjoner i Java er virtuelle som standard.


88) Hva er kovariant returtype?

Nå, siden java5, er det mulig å overstyre en hvilken som helst metode ved å endre returtypen hvis returtypen til subklasseoverstyringsmetoden er subklassetype. Det er kjent som kovariant returtype. Den kovariante returtypen spesifiserer at returtypen kan variere i samme retning som underklassen.

 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(); } } 
Test det nå
 Output: welcome to covariant return type 
Mer informasjon.

89) Hva er resultatet av følgende Java-program?

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

Produksjon

 Derived method called ... 

Forklaring

Metoden til Base class, dvs. baseMethod() overstyres i Derived class. I Test-klassen refererer referansevariabelen b (av typen Base class) til forekomsten av klassen Derived. Her oppnås Runtime polymorfisme mellom klasse Base og Derived. På kompileringstidspunktet ble tilstedeværelsen av metoden baseMethod sjekket i Base-klassen. Hvis den er tilstede, vil programmet kompileres ellers vil kompilatorfeilen vises. I dette tilfellet er baseMethod til stede i Base-klassen; derfor er den kompilert vellykket. Imidlertid, under kjøring, sjekker den om baseMethod har blitt overstyrt av Derived class, i så fall kalles den Derived class-metoden ellers baseclass-metoden. I dette tilfellet overstyrer Derived-klassen baseMethod; derfor kalles metoden Derived class.


Core Java - OOPs Concepts: siste nøkkelord Intervjuspørsmål


90) Hva er den endelige variabelen?

I Java brukes den endelige variabelen for å begrense brukeren fra å oppdatere den. Hvis vi initialiserer den endelige variabelen, kan vi ikke endre verdien. Med andre ord kan vi si at den endelige variabelen når den er tilordnet en verdi, aldri kan endres etter det. Den endelige variabelen som ikke er tilordnet noen verdi kan bare tilordnes gjennom klassekonstruktøren.

siste nøkkelord i java
 class Bike9{ final int speedlimit=90;//final variable void run(){ speedlimit=400; } public static void main(String args[]){ Bike9 obj=new Bike9(); obj.run(); } }//end of class 
Test det nå
 Output:Compile Time Error 
Mer informasjon.

91) Hva er den endelige metoden?

Hvis vi endrer en metode til en endelig metode, kan vi ikke overstyre den. Mer informasjon.

 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(); } } 
Test det nå
 Output:Compile Time Error 

92) Hva er den siste timen?

Hvis vi gjør en klassefinale, kan vi ikke arve den inn i noen av underklassene.

 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(); } } 
Test det nå
 Output:Compile Time Error 
Mer informasjon.

93) Hva er den endelige tomme variabelen?

En endelig variabel, ikke initialisert på tidspunktet for erklæringen, er kjent som den endelige tomme variabelen. Vi kan ikke initialisere den endelige tomme variabelen direkte. I stedet må vi initialisere den ved å bruke klassekonstruktøren. Det er nyttig i tilfeller der brukeren har noen data som ikke må endres av andre, for eksempel PAN-nummer. Tenk på følgende eksempel:

 class Student{ int id; String name; final String PAN_CARD_NUMBER; ... } 
Mer informasjon.

94) Kan vi initialisere den siste tomme variabelen?

Ja, hvis det ikke er statisk, kan vi initialisere det i konstruktøren. Hvis det er en statisk blank sluttvariabel, kan den bare initialiseres i den statiske blokken. Mer informasjon.


95) Kan du erklære hovedmetoden som endelig?

Ja, vi kan erklære hovedmetoden som offentlig statisk endelig void main(String[] args){}.


96) Hva er resultatet av følgende Java-program?

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

Produksjon

 20 

Forklaring

Siden i er den tomme siste variabelen. Det kan kun initialiseres én gang. Vi har initialisert den til 20. Derfor vil 20 bli skrevet ut.


97) Hva er resultatet av følgende Java-program?

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

Produksjon

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

Forklaring

Metoden getDetails() er endelig; derfor kan den ikke overstyres i underklassen.


98) Kan vi erklære en konstruktør som endelig?

Konstruktøren kan aldri erklæres som endelig fordi den aldri blir arvet. Konstruktører er ikke vanlige metoder; derfor er det ingen mening å erklære konstruktører som endelige. Men hvis du prøver å gjøre det, vil kompilatoren gi en feilmelding.


99) Kan vi erklære et grensesnitt som endelig?

Nei, vi kan ikke erklære et grensesnitt som endelig fordi grensesnittet må implementeres av en klasse for å gi dens definisjon. Derfor er det ingen mening å gjøre et grensesnitt endelig. Men hvis du prøver å gjøre det, vil kompilatoren vise en feil.


100) Hva er forskjellen mellom den endelige metoden og den abstrakte metoden?

Hovedforskjellen mellom den endelige metoden og den abstrakte metoden er at den abstrakte metoden ikke kan være endelig, da vi må overstyre dem i underklassen for å gi dens definisjon.