logo

300 Core Java-intervjufrågor | Set 1

90% säkerhet för intervjufrågor

Det finns en lista med 300 grundläggande Java-intervjufrågor. Om det finns någon central Java-intervjufråga som har ställts till dig, vänligen posta den i avsnittet Ställ frågor. Vi försäkrar att du kommer att få här de 90 % av de vanligaste intervjufrågorna och svaren.

Svaren på Core Java-intervjufrågorna är korta och raka. De centrala Java-intervjufrågorna är kategoriserade i Basics of Java-intervjufrågor, OOPs-intervjufrågor, String Handling-intervjufrågor, Multithreading-intervjufrågor, insamlingsintervjufrågor, JDBC-intervjufrågor, etc.


1 2 3 4 5

Core Java: Grunderna i Java-intervjufrågor


1) Vad är Java?

Java är på hög nivå, objektorienterad , robust, säkert programmeringsspråk, plattformsoberoende, högpresterande, flertrådad och bärbart programmeringsspråk. Den utvecklades av James Gosling i juni 1991. Den kan också kallas plattformen eftersom den tillhandahåller sin egen JRE och API.


2) Vilka är skillnaderna mellan C++ och Java?

Skillnaderna mellan C++ och Java ges i följande tabell.

Jämförelseindex C++Java
Plattformsoberoende C++ är plattformsberoende.Java är plattformsoberoende.
Används främst för C++ används främst för systemprogrammering.Java används främst för applikationsprogrammering. Det används ofta i fönster-, webbaserade, företags- och mobilapplikationer.
Designmål C++ designades för system- och applikationsprogrammering. Det var en förlängning av C programmeringsspråk .Java designades och skapades som en tolk för utskriftssystem men utökades senare som ett stöd för nätverksdatorer. Den designades med ett mål att vara lätt att använda och tillgänglig för en bredare publik.
Gå till C++ stöder goto-satsen.Java stöder inte goto-satsen.
Multipelt arv C++ stöder flera arv.Java stöder inte multipelt arv genom klass. Det kan uppnås genom gränssnitt i java .
Operatör överbelastning C++ stöder operatörens överbelastning .Java stöder inte operatörsöverbelastning.
Pekare C++ stöder pekare. Du kan skriva pekarprogram i C++.Java stöder pekare internt. Däremot kan du inte skriva pekarprogrammet i java. Det betyder att java har begränsat pekarstöd i Java.
Kompilator och tolk C++ använder endast kompilatorn. C++ kompileras och körs med kompilatorn som konverterar källkod till maskinkod, så C++ är plattformsberoende.Java använder både kompilator och tolk. Java-källkoden konverteras till bytekod vid kompilering. Tolken exekverar denna bytekod vid körning och producerar utdata. Java tolkas därför är det plattformsoberoende.
Call by Value och Call by reference C++ stöder både call by value och call by reference.Java stöder endast call by value. Det finns inget anrop genom referens i java.
Struktur och förening C++ stödjer strukturer och fackföreningar.Java stöder inte strukturer och fackföreningar.
Trådstöd C++ har inte inbyggt stöd för trådar. Den förlitar sig på tredjepartsbibliotek för trådstöd.Java har inbyggt tråd Stöd.
Dokumentationskommentar C++ stöder inte dokumentationskommentarer.Java stöder dokumentationskommentar (/** ... */) för att skapa dokumentation för java-källkod.
Virtuella nyckelord C++ stöder virtuella nyckelord så att vi kan avgöra om en funktion ska åsidosättas eller inte.Java har inget virtuellt nyckelord. Vi kan åsidosätta alla icke-statiska metoder som standard. Med andra ord, icke-statiska metoder är virtuella som standard.
osignerat högerskift >>> C++ stöder inte >>> operator.Java stöder osignerad högerskift >>> operator som fyller noll överst för de negativa talen. För positiva tal fungerar det på samma sätt som >> operator.
Arvsträd C++ skapar alltid ett nytt arvsträd.Java använder alltid ett enda arvsträd eftersom alla klasser är underordnade objektklassen i java. Objektklassen är roten till arv träd i java.
Hårdvara C++ är närmare hårdvara.Java är inte så interaktivt med hårdvara.
Objektorienterad C++ är ett objektorienterat språk. Men i C-språk är enkel rothierarki inte möjlig.Java är också en objektorienterad språk. Men allt (förutom grundläggande typer) är ett objekt i Java. Det är en enda rothierarki eftersom allt kommer från java.lang.Object.

3) Lista funktionerna i Java programmeringsspråk.

Det finns följande funktioner i Java Programming Language.

    Enkel:Java är lätt att lära sig. Syntaxen för Java är baserad på C++ vilket gör det lättare att skriva programmet i den.
    Objektorienterad:Java följer det objektorienterade paradigmet som gör att vi kan behålla vår kod som en kombination av olika typer av objekt som innehåller både data och beteende.
    Bärbar:Java stöder läs-en gång-skriv-var som helst metod. Vi kan köra Java-programmet på varje maskin. Java-program (.java) konverteras till bytekod (.class) som enkelt kan köras på varje maskin.
    Plattformsoberoende:Java är ett plattformsoberoende programmeringsspråk. Det skiljer sig från andra programmeringsspråk som C och C++ som behöver en plattform för att köras. Java kommer med sin plattform där dess kod exekveras. Java är inte beroende av vilket operativsystem som ska köras.
    Säkrad:Java är säkrat eftersom det inte använder explicita pekare. Java tillhandahåller också konceptet med bytekod och undantagshantering som gör det säkrare.
    Robust:Java är ett starkt programmeringsspråk eftersom det använder stark minneshantering. Koncepten som Automatisk sophämtning, Undantagshantering etc. gör den mer robust.
    Arkitektur neutral:Java är arkitektoniskt neutralt eftersom det inte är beroende av arkitekturen. I C kan storleken på datatyper variera beroende på arkitekturen (32 bitar eller 64 bitar) som inte finns i Java.
    Tolkad:Java använder JIT-tolken (Just-in-time) tillsammans med kompilatorn för programkörningen.
    Hög prestanda:Java är snabbare än andra traditionella tolkade programmeringsspråk eftersom Java bytecode är 'nära' inbyggd kod. Det är fortfarande lite långsammare än ett kompilerat språk (t.ex. C++).
    Flertrådad:Vi kan skriva Java-program som hanterar många uppgifter samtidigt genom att definiera flera trådar. Den största fördelen med multi-threading är att det inte upptar minne för varje tråd. Den delar ett gemensamt minnesområde. Trådar är viktiga för multimedia, webbapplikationer, etc.
    Distribuerad:Java distribueras eftersom det underlättar för användare att skapa distribuerade applikationer i Java. RMI och EJB används för att skapa distribuerade applikationer. Denna funktion i Java gör att vi kan komma åt filer genom att anropa metoderna från vilken dator som helst på internet.
    Dynamisk:Java är ett dynamiskt språk. Den stöder dynamisk laddning av klasser. Det betyder att klasser laddas på begäran. Den stöder också funktioner från sina modersmål, dvs C och C++.

4) Vad förstår du med Java Virtual Machine?

Java Virtual Machine är en virtuell maskin som gör det möjligt för datorn att köra Java-programmet. JVM fungerar som en körtidsmotor som anropar huvudmetoden som finns i Java-koden. JVM är specifikationen som måste implementeras i datorsystemet. Java-koden kompileras av JVM för att vara en bytekod som är maskinoberoende och nära den ursprungliga koden.


5) Vad är skillnaden mellan JDK, JRE och JVM?

JVM

JVM är en akronym för Java Virtual Machine; det är en abstrakt maskin som tillhandahåller runtime-miljön där Java-bytekod kan köras. Det är en specifikation som specificerar hur Java Virtual Machine fungerar. Dess implementering har tillhandahållits av Oracle och andra företag. Dess implementering är känd som JRE.

JVM är tillgängliga för många hårdvaru- och mjukvaruplattformar (så JVM är plattformsberoende). Det är en runtime-instans som skapas när vi kör Java-klassen. Det finns tre begrepp om JVM: specifikation, implementering och instans.

JRE

JRE står för Java Runtime Environment. Det är implementeringen av JVM. Java Runtime Environment är en uppsättning mjukvaruverktyg som används för att utveckla Java-applikationer. Den används för att tillhandahålla runtime-miljön. Det är implementeringen av JVM. Det finns fysiskt. Den innehåller en uppsättning bibliotek + andra filer som JVM använder vid körning.

JDK

JDK är en förkortning för Java Development Kit. Det är en mjukvaruutvecklingsmiljö som används för att utveckla Java-applikationer och appletar. Det finns fysiskt. Den innehåller JRE + utvecklingsverktyg. JDK är en implementering av någon av nedanstående Java-plattformar som släppts av Oracle Corporation:

  • Standard Edition Java-plattform
  • Enterprise Edition Java-plattform
  • Micro Edition Java-plattform
Fler detaljer.

6) Hur många typer av minnesområden tilldelas av JVM?

Många typer:

    Klass(metod) område:Klassområde lagrar strukturer per klass, såsom körtidskonstantpoolen, fält, metoddata och koden för metoder.Högen:Det är körtidsdataområdet där minnet är allokerat till objektenStack:Java Stack lagrar ramar. Den innehåller lokala variabler och delresultat, och spelar en roll i metodanrop och retur. Varje tråd har en privat JVM-stack, skapad samtidigt som tråden. En ny ram skapas varje gång en metod anropas. En ram förstörs när dess metodanrop är klar.Programräknareregister:PC-registret (programräknare) innehåller adressen till den Java-virtuella maskininstruktion som för närvarande exekveras.Inbyggd metodstapel:Den innehåller alla inhemska metoder som används i applikationen.
Fler detaljer.

7) Vad är JIT-kompilator?

Just-In-Time(JIT) kompilator: Det används för att förbättra prestandan. JIT kompilerar delar av bytekoden som har liknande funktionalitet samtidigt, och minskar därmed mängden tid som behövs för kompilering. Här syftar termen kompilator på en översättare från instruktionsuppsättningen för en virtuell Java-maskin (JVM) till instruktionsuppsättningen för en specifik CPU.


8) Vad är plattformen?

En plattform är den hårdvaru- eller mjukvarumiljö i vilken en mjukvara exekveras. Det finns två typer av plattformar, mjukvarubaserade och hårdvarubaserade. Java tillhandahåller den mjukvarubaserade plattformen.


9) Vilka är de viktigaste skillnaderna mellan Java-plattformen och andra plattformar?

Det finns följande skillnader mellan Java-plattformen och andra plattformar.

  • Java är den mjukvarubaserade plattformen medan andra plattformar kan vara hårdvaruplattformar eller mjukvarubaserade plattformar.
  • Java körs på toppen av andra hårdvaruplattformar medan andra plattformar bara kan ha hårdvarukomponenterna.

10) Vad ger Java dess natur att 'skriva en gång och springa var som helst'?

Bytekoden. Java-kompilatorn konverterar Java-programmen till klassfilen (Byte Code) som är mellanspråket mellan källkod och maskinkod. Denna bytekod är inte plattformsspecifik och kan köras på vilken dator som helst.


11) Vad är classloader?

Classloader är ett undersystem till JVM som används för att ladda klassfiler. När vi kör java-programmet laddas det först av klassladdaren. Det finns tre inbyggda klassladdare i Java.

    Bootstrap ClassLoader: Detta är den första klassladdaren som är superklassen av Extension classloader. Den laddar rt.jar fil som innehåller alla klassfiler av Java Standard Edition som java.lang-paketklasser, java.net-paketklasser, java.util-paketklasser, java.io-paketklasser, java.sql-paketklasser, etc.Tillägg ClassLoader: Detta är den underordnade klassladdaren för Bootstrap och den överordnade klassladdaren för System classloader. Den laddar jar-filerna som finns inuti $JAVA_HOME/jre/lib/ext katalog.System/applikation ClassLoader: Detta är den underordnade klassladdaren för Extension classloader. Den laddar klassfilerna från klasssökvägen. Som standard är klasssökvägen inställd på den aktuella katalogen. Du kan ändra klasssökvägen med omkopplaren '-cp' eller '-classpath'. Det är också känt som Application classloader.

12) Är Empty .java-filnamn ett giltigt källfilnamn?

Ja, Java tillåter att spara vår java-fil genom att .java bara, vi behöver kompilera det genom javac .java och springa förbi java klassnamn Låt oss ta ett enkelt exempel:

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

kompilera den genom javac .java

kör den förbi java A


13) Är delete, next, main, exit eller null nyckelord i java?

Nej.


14) Om jag inte anger några argument på kommandoraden, vad kommer då värdet som lagras i String-arrayen att skickas till main()-metoden, tomt eller NULL?

Den är tom, men inte null.


15) Vad händer om jag skriver static public void istället för public static void?

Programmet kompilerar och körs korrekt eftersom ordningen på specifikationer inte spelar någon roll i Java.


16) Vilket är standardvärdet för de lokala variablerna?

De lokala variablerna initieras inte till något standardvärde, varken primitiver eller objektreferenser.


17) Vilka är de olika åtkomstspecifikationerna i Java?

I Java är åtkomstspecificerare de nyckelord som används för att definiera åtkomstomfånget för metoden, klassen eller en variabel. I Java finns det fyra åtkomstspecifikationer nedan.

    offentligKlasserna, metoderna eller variablerna som definieras som offentliga kan nås av vilken klass eller metod som helst.SkyddadProtected kan nås av klassen i samma paket, eller av underklassen till denna klass, eller inom samma klass.StandardStandard är endast tillgängliga inom paketet. Som standard är alla klasser, metoder och variabler av standardomfattning.PrivatDen privata klassen, metoderna eller variablerna som definieras som privata kan endast nås inom klassen.

18) Vad är syftet med statiska metoder och variabler?

Metoderna eller variablerna som definieras som statiska delas mellan alla objekt i klassen. Det statiska är delen av klassen och inte av objektet. De statiska variablerna lagras i klassområdet och vi behöver inte skapa objektet för att komma åt sådana variabler. Därför används static i fallet där vi behöver definiera variabler eller metoder som är gemensamma för alla objekt i klassen.

Till exempel, i klassen som simulerar insamlingen av studenter på en högskola, är högskolans namn det gemensamma attributet för alla studenter. Därför kommer collegenamnet att definieras som statisk .


19) Vilka är fördelarna med paket i Java?

Det finns olika fördelar med att definiera paket i Java.

  • Paketen undviker namnkrockarna.
  • Paketet ger enklare åtkomstkontroll.
  • Vi kan också ha de dolda klasserna som inte är synliga utanför och som används av paketet.
  • Det är lättare att hitta de relaterade klasserna.

20) Vad är resultatet av följande Java-program?

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

Utdata från ovanstående kod kommer att vara

 30Javatpoint Javatpoint1020 

Förklaring

I det första fallet behandlas 10 och 20 som siffror och adderas till 30. Nu behandlas deras summa 30 som strängen och sammanlänkas med strängen Javatpoint . Därför blir utgången 30 Javapoint .

I det andra fallet är strängen Javatpoint sammanlänkad med 10 för att vara strängen Javatpoint10 som sedan sammanlänkas med 20 att vara Javatpoint1020 .


21) Vad är resultatet av följande Java-program?

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

Utdata från ovanstående kod kommer att vara

 200Javatpoint Javatpoint200 

Förklaring

I det första fallet kommer talen 10 och 20 att multipliceras först och sedan behandlas resultatet 200 som strängen och sammanlänkas med strängen Javatpoint att producera produktionen 200 Javapoint .

I det andra fallet kommer talen 10 och 20 att multipliceras först till 200 eftersom multiplikationens företräde är högre än addition. Resultatet 200 kommer att behandlas som strängen och sammanfogas med strängen Javatpoint att producera resultatet som Javatpoint200 .


22) Vad är resultatet av följande Java-program?

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

Ovanstående kod kommer att ge kompileringstidsfelet eftersom for-loopen kräver ett booleskt värde i den andra delen och vi tillhandahåller ett heltalsvärde, dvs 0.


Core Java - OOPs-koncept: Inledande OOPs-intervjufrågor

Det ges mer än 50 OOPs (Object-Oriented Programming and System) intervjufrågor. De har dock kategoriserats i många sektioner som konstruktörsintervjufrågor, statiska intervjufrågor, arvsintervjufrågor, abstraktionsintervjufrågor, polymorfismintervjufrågor, etc. för bättre förståelse.


23) Vad är objektorienterat paradigm?

Det är ett programmeringsparadigm baserat på objekt som har data och metoder definierade i den klass som det tillhör. Objektorienterat paradigm syftar till att införliva fördelarna med modularitet och återanvändbarhet. Objekt är instanser av klasser som interagerar med varandra för att designa applikationer och program. Det finns följande egenskaper hos det objektorienterade paradigmet.

  • Följer bottom-up-metoden i programdesign.
  • Fokusera på data med metoder för att arbeta på objektets data
  • Inkluderar koncept som Inkapsling och abstraktion som döljer komplexiteten för användaren och visar endast funktionalitet.
  • Implementerar realtidsmetoden som arv, abstraktion, etc.
  • Exemplen på det objektorienterade paradigmet är C++, Simula, Smalltalk, Python, C#, etc.

24) Vad är ett föremål?

Objektet är en realtidsenhet som har något tillstånd och beteende. I Java är Object en instans av klassen som har instansvariablerna som objektets tillstånd och metoderna som objektets beteende. Objektet för en klass kan skapas med hjälp av ny nyckelord.


25) Vad är skillnaden mellan ett objektorienterat programmeringsspråk och ett objektbaserat programmeringsspråk?

Det finns följande grundläggande skillnader mellan det objektorienterade språket och det objektbaserade språket.

  • Objektorienterade språk följer alla begreppen OOPs medan det objektbaserade språket inte följer alla begreppen OOPs som arv och polymorfism.
  • Objektorienterade språk har inte de inbyggda objekten medan objektbaserade språk har de inbyggda objekten, till exempel JavaScript har fönsterobjekt.
  • Exempel på objektorienterad programmering är Java, C#, Smalltalk, etc. medan exemplen på objektbaserade språk är JavaScript, VBScript, etc.

26) Vad blir det initiala värdet för en objektreferens som definieras som en instansvariabel?

Alla objektreferenser initieras till null i Java.


Core Java - OOPs Concepts: Konstruktörsintervjufrågor


27) Vad är konstruktören?

Konstruktorn kan definieras som den speciella typen av metod som används för att initiera ett objekts tillstånd. Den anropas när klassen instansieras och minnet allokeras för objektet. Varje gång skapas ett objekt med hjälp av ny nyckelord, kallas standardkonstruktorn för klassen. Namnet på konstruktören måste likna klassnamnet. Konstruktorn får inte ha en explicit returtyp.

Fler detaljer.

28) Hur många typer av konstruktörer används i Java?

Baserat på parametrarna som skickas i konstruktörerna finns det två typer av konstruktörer i Java.

    Standardkonstruktör:standardkonstruktorn är den som inte accepterar något värde. Standardkonstruktorn används huvudsakligen för att initiera instansvariabeln med standardvärdena. Det kan också användas för att utföra några användbara uppgifter för att skapa objekt. En standardkonstruktor anropas implicit av kompilatorn om det inte finns någon konstruktor definierad i klassen.Parameteriserad konstruktör:Den parametriserade konstruktorn är den som kan initiera instansvariablerna med de givna värdena. Med andra ord kan vi säga att de konstruktorer som kan acceptera argumenten kallas parametriserade konstruktorer.
Java-konstruktörer

29) Vad är syftet med en standardkonstruktor?

Syftet med standardkonstruktorn är att tilldela standardvärdet till objekten. Java-kompilatorn skapar en standardkonstruktor implicit om det inte finns någon konstruktor 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(); } } 
Testa det nu

Produktion:

 0 null 0 null 

Förklaring: I klassen ovan skapar du ingen konstruktor, så kompilatorn ger dig en standardkonstruktor. Här tillhandahålls 0- och null-värden som standardkonstruktor.

Java standardkonstruktor
Fler detaljer.

30) Returnerar konstruktorn något värde?

År: ja, konstruktorn returnerar implicit den aktuella instansen av klassen (Du kan inte använda en explicit returtyp med konstruktorn). Fler detaljer.


31) Är konstruktören ärvd?

Nej, konstruktören ärvs inte.


32) Kan du göra en konstruktörsfinal?

Nej, konstruktören kan inte vara slutgiltig.

hej världen med java

33) Kan vi överbelasta konstruktörerna?

Ja, konstruktörerna kan överbelastas genom att ändra antalet argument som accepteras av konstruktören eller genom att ändra datatypen för parametrarna. Betrakta följande exempel.

 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 ovan är konstruktortestet överbelastat med en annan konstruktor. I det första anropet till konstruktorn anropas konstruktorn med ett argument, och i kommer att initialiseras med värdet 10. I det andra anropet till konstruktorn anropas dock konstruktorn med de 2 argumenten, och i kommer att initieras med värdet 15.


34) Vad förstår du med copy constructor i Java?

Det finns ingen kopieringskonstruktor i java. Vi kan dock kopiera värdena från ett objekt till ett annat som copy constructor i C++.

Det finns många sätt att kopiera ett objekts värden till ett annat i java. Dom är:

  • Av konstruktör
  • Genom att tilldela ett objekts värden till ett annat
  • Genom clone()-metoden av klassen Object

I det här exemplet kommer vi att kopiera värdena för ett objekt till ett annat med hjälp av java-konstruktorn.

 //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(); } } 
Testa det nu

Produktion:

 111 Karan 111 Karan 

35) Vilka är skillnaderna mellan konstruktörerna och metoderna?

Det finns många skillnader mellan konstruktörer och metoder. De ges nedan.

Java-konstruktörJava-metod
En konstruktor används för att initiera ett objekts tillstånd.En metod används för att exponera ett objekts beteende.
En konstruktör får inte ha en returtyp.En metod måste ha en returtyp.
Konstruktorn anropas implicit.Metoden åberopas explicit.
Java-kompilatorn tillhandahåller en standardkonstruktor om du inte har någon konstruktor i en klass.Metoden tillhandahålls inte av kompilatorn i alla fall.
Konstruktörens namn måste vara samma som klassnamnet.Metodnamnet kan vara detsamma som klassnamnet.

Java-konstruktörer vs metoder

36) Vad är resultatet av följande 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); } } 

Resultatet av följande program är:

 a = 10 b = 15 

Här flyttas datatypen för variablerna a och b, d.v.s. byte upp till int, och den första parametriserade konstruktorn med de två heltalsparametrarna anropas.


37) Vad är resultatet av följande Java-program?

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

Utdata från programmet är 0 eftersom variabeln i initieras till 0 internt. Eftersom vi vet att en standardkonstruktor anropas implicit om det inte finns någon konstruktor i klassen, initieras variabeln i till 0 eftersom det inte finns någon konstruktor i klassen.


38) Vad är resultatet av följande 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 finns en kompilatorfel i programmet eftersom det finns ett anrop till standardkonstruktorn i huvudmetoden som inte finns i klassen. Det finns dock bara en parametriserad konstruktor i klassen Test. Därför anropas ingen standardkonstruktor implicit av konstruktorn.


Core Java - OOPs Concepts: statiskt nyckelord Intervjufrågor


39) Vad är den statiska variabeln?

Den statiska variabeln används för att referera till den gemensamma egenskapen för alla objekt (det är inte unikt för varje objekt), t.ex. anställdas företagsnamn, studenters universitetsnamn etc. Statisk variabel får minne endast en gång i klassområdet kl. tidpunkten för klassladdning. Att använda en statisk variabel gör ditt program mer minneseffektivt (det sparar minne). Statisk variabel tillhör klassen snarare än 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(); } } 
Testa det nu
 Output:111 Karan ITS 222 Aryan ITS 

Fler detaljer.

40) Vad är den statiska metoden?

  • En statisk metod tillhör klassen snarare än objektet.
  • Det finns inget behov av att skapa objektet för att anropa de statiska metoderna.
  • En statisk metod kan komma åt och ändra värdet på den statiska variabeln.
Fler detaljer.

41) Vilka begränsningar tillämpas på de statiska Java-metoderna?

Två huvudbegränsningar tillämpas på de statiska metoderna.

  • Den statiska metoden kan inte använda icke-statisk datamedlem eller anropa den icke-statiska metoden direkt.
  • detta och super kan inte användas i statiska sammanhang eftersom de är icke-statiska.

42) Varför är huvudmetoden statisk?

Eftersom objektet inte behöver anropa den statiska metoden. Om vi ​​gör huvudmetoden icke-statisk måste JVM skapa sitt objekt först och sedan anropa main()-metoden vilket kommer att leda till den extra minnesallokeringen. Fler detaljer.


43) Kan vi åsidosätta de statiska metoderna?

Nej, vi kan inte åsidosätta statiska metoder.

44) Vad är det statiska blocket?

Statiskt block används för att initiera det statiska dataelementet. Den exekveras före huvudmetoden, vid tidpunkten för klassladdning.

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

Fler detaljer.

45) Kan vi köra ett program utan main()-metoden?

Svar) Nej, det var möjligt före JDK 1.7 med det statiska blocket. Sedan JDK 1.7 är det inte möjligt. Fler detaljer.


46) Vad händer om den statiska modifieraren tas bort från signaturen för huvudmetoden?

Program kompilerar. Men vid körning får den ett felmeddelande 'NoSuchMethodError'.


47) Vad är skillnaden mellan statisk (klass) metod och instansmetod?

statisk eller klassmetodeninstansmetoden
1) En metod som deklareras som statisk är känd som den statiska metoden.En metod som inte deklareras som statisk kallas instansmetoden.
2) Vi behöver inte skapa objekten för att anropa de statiska metoderna.Objektet krävs för att anropa instansmetoderna.
3) Icke-statiska (instansmedlemmar) kan inte nås direkt i det statiska sammanhanget (statisk metod, statiskt block och statisk kapslad klass).Både statiska och icke-statiska variabler kan nås i instansmetoder.
4)Till exempel: public static int cube(int n){ return n*n*n;}Till exempel: public void msg(){...}.

48) Kan vi göra konstruktörer statiska?

Som vi vet att det statiska sammanhanget (metod, block eller variabel) tillhör klassen, inte objektet. Eftersom konstruktörer endast anropas när objektet skapas, är det ingen mening att göra konstruktörerna statiska. Men om du försöker göra det kommer kompilatorn att visa kompilatorfelet.


49) Kan vi göra de abstrakta metoderna statiska i Java?

I Java, om vi gör de abstrakta metoderna statiska, kommer det att bli en del av klassen, och vi kan direkt kalla det vilket är onödigt. Att anropa en odefinierad metod är helt värdelös och därför är det inte tillåtet.


50) Kan vi deklarera statiska variabler och metoder i en abstrakt klass?

Ja, vi kan deklarera statiska variabler och metoder i en abstrakt metod. Eftersom vi vet att det inte finns något krav på att objektet ska få tillgång till det statiska sammanhanget, kan vi därför komma åt det statiska sammanhanget som deklareras inuti den abstrakta klassen genom att använda namnet på den abstrakta klassen. Betrakta följande exempel.

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

Produktion

 hi !! I am good !! i = 102 

Core Java - OOPs Concepts: Arvsintervjufrågor


51) Vad är detta nyckelord i java?

De detta nyckelord är en referensvariabel som refererar till det aktuella objektet. Det finns olika användningsområden för detta nyckelord i Java. Den kan användas för att hänvisa till aktuella klassegenskaper såsom instansmetoder, variabel, konstruktorer, etc. Den kan också skickas som ett argument till metoderna eller konstruktörerna. Den kan också returneras från metoden som den aktuella klassinstansen.

java detta nyckelord
Fler detaljer.

52) Vilka är de viktigaste användningsområdena för detta sökord?

Det finns följande användningsområden för detta nyckelord.

    dettakan användas för att referera till den aktuella klassinstansvariabeln.dettakan användas för att anropa aktuell klassmetod (implicit)detta()kan användas för att anropa den aktuella klasskonstruktorn.dettakan skickas som ett argument i metodanropet.dettakan skickas som ett argument i konstruktoranropet.dettakan användas för att returnera den aktuella klassinstansen från metoden.

53) Kan vi tilldela referensen till detta variabel?

Nej, detta kan inte tilldelas något värde eftersom det alltid pekar på det aktuella klassobjektet och detta är den sista referensen i Java. Men om vi försöker göra det kommer kompilatorfelet att visas. Betrakta följande exempel.

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

Produktion

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

54) Kan detta nyckelord användas för att hänvisa statiska medlemmar?

Ja, det är möjligt att använda detta nyckelord för att referera till statiska medlemmar eftersom detta bara är en referensvariabel som refererar till det aktuella klassobjektet. Men eftersom vi vet det är det onödigt att komma åt statiska variabler genom objekt, därför är det inte den bästa praxisen att använda detta för att referera till statiska medlemmar. Betrakta följande exempel.

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

Produktion

 10 

55) Hur kan konstruktorkedjan göras med detta nyckelord?

Konstruktorkedjning gör det möjligt för oss att anropa en konstruktör från en annan konstruktör av klassen med avseende på det aktuella klassobjektet. Vi kan använda detta nyckelord för att utföra konstruktorkedja inom samma klass. Betrakta följande exempel som illustrerar hur vi kan använda detta nyckelord för att uppnå konstruktorkedja.

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

Produktion

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

56) Vilka är fördelarna med att överföra detta till en metod istället för själva klassobjektet?

Som vi vet, att detta hänvisar till det aktuella klassobjektet, måste det därför likna det aktuella klassobjektet. Det kan dock finnas två huvudsakliga fördelar med att överföra detta till en metod istället för det aktuella klassobjektet.

  • detta är en slutlig variabel. Därför kan detta inte tilldelas något nytt värde medan det aktuella klassobjektet kanske inte är slutgiltigt och kan ändras.
  • detta kan användas i det synkroniserade blocket.

57) Vad är arvet?

Arv är en mekanism genom vilken ett objekt förvärvar alla egenskaper och beteendet hos ett annat objekt av en annan klass. Den används för kodåteranvändbarhet och metodöverstyrning. Tanken bakom arv i Java är att du kan skapa nya klasser som bygger på befintliga klasser. När du ärver från en befintlig klass kan du återanvända metoder och fält för den överordnade klassen. Dessutom kan du lägga till nya metoder och fält i din nuvarande klass också. Arv representerar IS-A-relationen som också är känd som en förälder-barn-relation.

Det finns fem typer av arv i Java.

  • En-nivå arv
  • Arv på flera nivåer
  • Multipelt arv
  • Hierarkiskt arv
  • Hybrid arv

Multipelarv stöds inte i Java genom klass.

Fler detaljer.

58) Varför används arv i Java?

Det finns olika fördelar med att använda arv i Java som ges nedan.

  • Arv ger kod återanvändbarhet. Den härledda klassen behöver inte omdefiniera basklassens metod om den inte behöver tillhandahålla den specifika implementeringen av metoden.
  • Runtime polymorfism kan inte uppnås utan att använda arv.
  • Vi kan simulera arvet av klasser med realtidsobjekten vilket gör OOPs mer realistiska.
  • Arv ger datadöljning. Basklassen kan dölja vissa data från den härledda klassen genom att göra den privat.
  • Metodöverskridande kan inte uppnås utan arv. Genom metodöverstyrning kan vi ge en specifik implementering av någon grundläggande metod som finns i basklassen.

59) Vilken klass är superklassen för alla klasserna?

Objektklassen är superklassen för alla andra klasser i Java.


60) Varför stöds inte multipelt arv i java?

För att minska komplexiteten och förenkla språket stöds inte multipelt arv i java. Tänk på ett scenario där A, B och C är tre klasser. Klassen C ärver klasserna A och B. Om A- och B-klasser har samma metod och du anropar det från ett underordnat klassobjekt, blir det oklarhet att anropa metoden för A- eller B-klass.

Eftersom kompileringsfelen är bättre än körtidsfel, renderar Java kompileringsfel om du ärver 2 klasser. Så oavsett om du har samma metod eller olika, kommer det att uppstå ett kompileringstidsfel.

 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? } } 
Testa det nu
 Compile Time Error 

61) Vad är aggregering?

Aggregation kan definieras som förhållandet mellan två klasser där den aggregerade klassen innehåller en referens till den klass den äger. Aggregation beskrivs bäst som en har en relation. Till exempel innehåller den sammanlagda klassen Anställd som har olika fält såsom ålder, namn och lön också ett objekt av adressklassen med olika fält såsom adressrad 1, stad, stat och pinkod. Med andra ord kan vi säga att Anställd (klass) har ett objekt av adressklass. Betrakta följande exempel.

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

Produktion

 111 varun gzb UP india 112 arun gno UP india 

62) Vad är komposition?

Att hålla referensen till en klass inom någon annan klass kallas komposition. När ett objekt innehåller det andra objektet, om det inneslutna objektet inte kan existera utan existensen av ett containerobjekt, kallas det komposition. Med andra ord kan vi säga att komposition är det speciella fallet av aggregering som representerar ett starkare förhållande mellan två objekt. Exempel: En klass innehåller elever. En elev kan inte existera utan en klass. Det finns en sammansättning mellan klass och elever.


63) Vad är skillnaden mellan aggregering och sammansättning?

Aggregation representerar det svaga förhållandet medan sammansättningen representerar det starka förhållandet. Till exempel har cykeln en indikator (aggregation), men cykeln har en motor (sammansättning).


64) Varför stöder inte Java pekare?

Pekaren är en variabel som refererar till minnesadressen. De används inte i Java eftersom de är osäkra (osäkra) och komplicerade att förstå.


65) Vad är super i java?

De super nyckelord i Java är en referensvariabel som används för att referera till det omedelbara överordnade klassobjektet. När du skapar instansen av underklassen skapas en instans av den överordnade klassen implicit som refereras av superreferensvariabel. Super() anropas i klasskonstruktorn implicit av kompilatorn om det inte finns någon super eller detta.

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

Produktion:

 animal is created dog is created 
Fler detaljer.

66) Hur kan konstruktorkedjan göras genom att använda supernyckelordet?

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

Produktion

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

67) Vilka är de huvudsakliga användningsområdena för supersökordet?

Det finns följande användningsområden för super nyckelord.

  • super kan användas för att referera till den omedelbara överordnade klassens instansvariabel.
  • super kan användas för att anropa den omedelbara överordnade klassmetoden.
  • super() kan användas för att anropa omedelbar överordnad klasskonstruktor.

68) Vilka är skillnaderna mellan detta och supersökord?

Det finns följande skillnader mellan detta och supersökord.

  • Supernyckelordet pekar alltid på de överordnade klasskontexterna medan detta nyckelord alltid pekar på det aktuella klasskontexten.
  • Supernyckelordet används primärt för att initiera basklassvariablerna inom den härledda klasskonstruktorn medan detta nyckelord primärt används för att skilja mellan lokala variabler och instansvariabler när de skickas i klasskonstruktorn.
  • Super och detta måste vara den första satsen i konstruktorn annars kommer kompilatorn att ge ett fel.

69) Vad är resultatet av följande 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(); } } 

Produktion

 Person class constructor called Employee class constructor called 

Förklaring

Super() anropas implicit av kompilatorn om ingen super() eller this() är inkluderad explicit i den härledda klasskonstruktorn. Därför, i det här fallet, anropas klasskonstruktorn Person först och sedan anropas klasskonstruktorn för anställd.


70) Kan du använda både denna() och super() i en konstruktor?

Nej, eftersom this() och super() måste vara den första satsen i klasskonstruktorn.

Exempel:

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

Produktion:

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

71) Vad är objektkloning?

Objektkloningen används för att skapa den exakta kopian av ett objekt. Metoden clone() för klassen Object används för att klona ett objekt. De java.lang.Klonbar gränssnittet måste implementeras av klassen vars objektklon vi vill skapa. Om vi ​​inte implementerar Cloneable Interface genererar clone() metoden CloneNotSupportedException.

 protected Object clone() throws CloneNotSupportedException 
Fler detaljer.

Core Java - OOPs-koncept: Metodöverbelastning av intervjufrågor


72) Vad är metodöverbelastning?

Metodöverbelastning är polymorfismtekniken som gör att vi kan skapa flera metoder med samma namn men olika signatur. Vi kan uppnå metodöverbelastning på två sätt.

  • Genom att ändra antalet argument
  • Genom att ändra datatypen för argument

Metodöverbelastning ökar programmets läsbarhet. Metodöverbelastning utförs för att snabbt ta reda på programmet.

Fler detaljer.

73) Varför är metodöverbelastning inte möjlig genom att ändra returtypen i java?

I Java är metodöverbelastning inte möjlig genom att ändra programmets returtyp för att undvika oklarheter.

 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 }} 
Testa det nu

Produktion:

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

74) Kan vi överbelasta metoderna genom att göra dem statiska?

Nej, vi kan inte överbelasta metoderna genom att bara använda det statiska nyckelordet på dem (antal parametrar och typer är desamma). Betrakta följande exempel.

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

Produktion

 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 överbelasta main()-metoden?

Ja, vi kan ha hur många huvudmetoder som helst i ett Java-program genom att använda metodöverbelastning.

Fler detaljer.

76) Vad är metodöverbelastning med typpromotion?

Med Typ promotion är metodöverbelastning, vi menar att en datatyp kan flyttas till en annan implicit om ingen exakt matchning hittas.

Överbelastning av Java-metod med typpromotion

Som visas i diagrammet ovan kan byten flyttas upp till kort, int, lång, flytande eller dubbel. Den korta datatypen kan befordras till int, long, float eller double. Char datatypen kan befordras till int, long, float eller double och så vidare. Betrakta följande exempel.

 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); } } 
Testa det nu

Produktion

 40 60 

77) Vad är resultatet av följande 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 } } 

Produktion

 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 

Förklaring

Det finns två metoder definierade med samma namn, dvs summa. Den första metoden accepterar heltals- och långtypen medan den andra metoden accepterar lång- och heltalstypen. Parametern passerade som är a = 20, b = 20. Vi kan inte säga vilken metod som kommer att kallas eftersom det inte finns någon tydlig skillnad mellan heltalsliteral och lång literal. Detta är fallet med tvetydighet. Därför kommer kompilatorn att ge ett fel.


Core Java - OOPs-koncept: Metodöverstyrande intervjufrågor


78) Vad är metodöverordnad:

Om en underklass tillhandahåller en specifik implementering av en metod som redan tillhandahålls av dess överordnade klass, kallas den metodöverskrivning. Det används för körtidspolymorfism och för att implementera gränssnittsmetoderna.

Regler för metodöverstyrning

  • Metoden måste ha samma namn som i den överordnade klassen.
  • Metoden måste ha samma signatur som i den överordnade klassen.
  • Två klasser måste ha en IS-A-relation mellan sig.
Fler detaljer.


79) Kan vi åsidosätta den statiska metoden?

Nej, du kan inte åsidosätta den statiska metoden eftersom de är en del av klassen, inte objektet.


80) Varför kan vi inte åsidosätta statisk metod?

Det beror på att den statiska metoden är en del av klassen och den är bunden till klassen medan instansmetoden är bunden till objektet och statisk får minne i klassområdet och instans får minne i en hög.


81) Kan vi åsidosätta den överbelastade metoden?

Ja.


82) Skillnad mellan metod Överbelastning och Åsidosättande.

Metod ÖverbelastningMetod Åsidosättande
1) Metodöverbelastning ökar programmets läsbarhet.Metodöverstyrning tillhandahåller den specifika implementeringen av metoden som redan tillhandahålls av dess superklass.
2) Metodöverbelastning sker inom klassen.Metodöverstyrning sker i två klasser som har IS-A-relation mellan sig.
3) I detta fall måste parametrarna vara olika.I det här fallet måste parametrarna vara desamma.

83) Kan vi åsidosätta de privata metoderna?

Nej, vi kan inte åsidosätta de privata metoderna eftersom omfattningen av privata metoder är begränsad till klassen och vi kan inte komma åt dem utanför klassen.


84) Kan vi ändra omfattningen av den åsidosatta metoden i underklassen?

Ja, vi kan ändra omfattningen av den åsidosatta metoden i underklassen. Vi måste dock notera att vi inte kan minska tillgängligheten för metoden. Följande punkt måste tas om hand när man ändrar metodens tillgänglighet.

  • Det privata kan ändras till skyddat, offentligt eller standard.
  • Den skyddade kan ändras till offentlig eller standard.
  • Standardinställningen kan ändras till offentlig.
  • Allmänheten kommer alltid att förbli offentlig.

85) Kan vi modifiera throws-satsen för superklassmetoden samtidigt som vi åsidosätter den i underklassen?

Ja, vi kan modifiera throws-satsen för superklassmetoden samtidigt som vi åsidosätter den i underklassen. Det finns dock vissa regler som ska följas samtidigt som de åsidosätter vid undantagshantering.

  • Om superklassmetoden inte deklarerar ett undantag, kan den överordnade subklassmetoden inte deklarera det markerade undantaget, men det kan deklarera det omarkerade undantaget.
  • Om superklassmetoden deklarerar ett undantag, kan den överordnade underklassmetoden deklarera samma, underklassundantag eller inget undantag men kan inte deklarera överordnat undantag.

86) Vad är resultatet av följande 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); } } 

Produktion

 Base class method called with integer a = 10 

Förklaring

Metoden() är överbelastad i klassen Base medan den härleds i klassen Derived med dubbeltypen som parameter. I metodanropet skickas heltal.

87) Kan du ha virtuella funktioner i Java?

Ja, alla funktioner i Java är virtuella som standard.


88) Vad är kovariant returtyp?

Nu, sedan java5, är det möjligt att åsidosätta vilken metod som helst genom att ändra returtypen om returtypen för den överordnade underklassmetoden är underklasstyp. Det är känt som kovariant returtyp. Den kovarianta returtypen anger att returtypen kan variera i samma riktning 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(); } } 
Testa det nu
 Output: welcome to covariant return type 
Fler detaljer.

89) Vad är resultatet av följande 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(); } } 

Produktion

 Derived method called ... 

Förklaring

Metoden för Base class, dvs baseMethod() åsidosätts i Derived class. I testklassen hänvisar referensvariabeln b (av typen Base class) till instansen av klassen Derived. Här uppnås Runtime polymorfism mellan klass Base och Derived. Vid kompileringstid kontrollerades närvaron av metoden baseMethod i Base-klassen. Om den är närvarande så kompileras programmet annars kommer kompilatorfelet att visas. I det här fallet finns baseMethod i Base-klassen; därför kompileras den framgångsrikt. Men vid körning kontrollerar den om basmetoden har åsidosatts av den härledda klassen, i så fall anropas den härledda klassmetoden annars anropas basklassmetoden. I det här fallet åsidosätter klassen Derived baseMethod; därför kallas den härledda klassmetoden.


Core Java - OOPs Concepts: sista nyckelordet Intervjufrågor


90) Vad är den slutliga variabeln?

I Java används den sista variabeln för att begränsa användaren från att uppdatera den. Om vi ​​initierar den slutliga variabeln kan vi inte ändra dess värde. Med andra ord kan vi säga att den slutliga variabeln en gång tilldelad ett värde aldrig kan ändras efter det. Den slutliga variabeln som inte tilldelas något värde kan endast tilldelas genom klasskonstruktorn.

sista nyckelordet 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 
Testa det nu
 Output:Compile Time Error 
Fler detaljer.

91) Vilken är den sista metoden?

Om vi ​​ändrar någon metod till en slutlig metod kan vi inte åsidosätta den. Fler detaljer.

 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(); } } 
Testa det nu
 Output:Compile Time Error 

92) Vilken är den sista klassen?

Om vi ​​gör någon klassfinal kan vi inte ärva den till någon av underklasserna.

 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(); } } 
Testa det nu
 Output:Compile Time Error 
Fler detaljer.

93) Vad är den slutliga tomma variabeln?

En slutlig variabel, som inte initierats vid tidpunkten för deklarationen, är känd som den slutliga tomma variabeln. Vi kan inte initiera den slutliga tomma variabeln direkt. Istället måste vi initiera det med hjälp av klasskonstruktorn. Det är användbart om användaren har vissa data som inte får ändras av andra, till exempel PAN-nummer. Tänk på följande exempel:

 class Student{ int id; String name; final String PAN_CARD_NUMBER; ... } 
Fler detaljer.

94) Kan vi initiera den slutliga tomma variabeln?

Ja, om det inte är statiskt kan vi initiera det i konstruktorn. Om det är en statisk tom slutvariabel kan den endast initieras i det statiska blocket. Fler detaljer.


95) Kan du förklara huvudmetoden som slutgiltig?

Ja, vi kan deklarera huvudmetoden som public static final void main(String[] args){}.


96) Vad är resultatet av följande Java-program?

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

Produktion

 20 

Förklaring

Eftersom i är den tomma slutvariabeln. Det kan bara initieras en gång. Vi har initialiserat den till 20. Därför kommer 20 att skrivas ut.


97) Vad är resultatet av följande 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(); } } 

Produktion

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

Förklaring

Metoden getDetails() är final; därför kan den inte åsidosättas i underklassen.


98) Kan vi deklarera en konstruktör som slutgiltig?

Konstruktören kan aldrig deklareras som slutgiltig eftersom den aldrig ärvs. Konstruktörer är inte vanliga metoder; därför är det ingen mening att förklara konstruktörer som slutgiltiga. Men om du försöker göra det kommer kompilatorn att ge ett fel.


99) Kan vi deklarera ett gränssnitt som slutgiltigt?

Nej, vi kan inte deklarera ett gränssnitt som slutgiltigt eftersom gränssnittet måste implementeras av någon klass för att ge dess definition. Därför är det ingen mening att göra ett gränssnitt final. Men om du försöker göra det kommer kompilatorn att visa ett fel.


100) Vad är skillnaden mellan den slutliga metoden och den abstrakta metoden?

Huvudskillnaden mellan den slutliga metoden och den abstrakta metoden är att den abstrakta metoden inte kan vara slutgiltig eftersom vi måste åsidosätta dem i underklassen för att ge dess definition.