90 % sikkerhed for interviewspørgsmål
Der er listen over 300 centrale Java-interviewspørgsmål. Hvis der er et kernespørgsmål til Java-interview, der er blevet stillet til dig, så send det venligst i sektionen med stille spørgsmål. Vi forsikrer, at du her vil få de 90% ofte stillede interviewspørgsmål og svar.
Svarene på Core Java-interviewspørgsmålene er korte og konkrete. De centrale Java-interviewspørgsmål er kategoriseret i Basics of Java-interviewspørgsmål, OOPs-interviewspørgsmål, String Handling-interviewspørgsmål, Multithreading-interviewspørgsmål, indsamlingsinterviewspørgsmål, JDBC-interviewspørgsmål osv.
1 2 3 4 5
Core Java: Grundlæggende om Java-interviewspørgsmål
1) Hvad er Java?
Java er det høje niveau, objektorienteret , robust, sikkert programmeringssprog, platform-uafhængig, højtydende, multithreaded og bærbart programmeringssprog. Den er udviklet af James Gosling i juni 1991. Den kan også kendes som platformen, da den leverer sin egen JRE og API.
2) Hvad er forskellene mellem C++ og Java?
Forskellene mellem C++ og Java er angivet i følgende tabel.
Sammenligningsindeks | C++ | Java |
---|---|---|
Platformuafhængig | C++ er platformsafhængig. | Java er platform-uafhængig. |
Bruges hovedsageligt til | C++ bruges hovedsageligt til systemprogrammering. | Java bruges hovedsageligt til applikationsprogrammering. Det er meget udbredt i vindues-, webbaserede, virksomheds- og mobilapplikationer. |
Designmål | C++ er designet til programmering af systemer og applikationer. Det var en forlængelse af C programmeringssprog . | Java blev designet og skabt som en fortolker til printsystemer, men blev senere udvidet som en understøttende netværkscomputer. Den blev designet med et mål om at være nem at bruge og tilgængelig for et bredere publikum. |
Gå til | C++ understøtter goto-sætningen. | Java understøtter ikke goto-sætningen. |
Multipel arv | C++ understøtter multipel nedarvning. | Java understøtter ikke multipel nedarvning gennem klasse. Det kan opnås ved grænseflader i java . |
Operatør overbelastning | C++ understøtter operatør overbelastning . | Java understøtter ikke operatøroverbelastning. |
Pointer | C++ understøtter pointere. Du kan skrive pointerprogram i C++. | Java understøtter pointer internt. Du kan dog ikke skrive pointerprogrammet i java. Det betyder, at java har begrænset pointerunderstøttelse i Java. |
Kompiler og tolk | C++ bruger kun compiler. C++ kompileres og køres ved hjælp af compileren, som konverterer kildekoden til maskinkode, så C++ er platformsafhængig. | Java bruger både compiler og fortolker. Java-kildekoden konverteres til bytekode på kompileringstidspunktet. Fortolkeren udfører denne bytekode ved kørsel og producerer output. Java fortolkes derfor er det platformsuafhængigt. |
Call by Value og Call by reference | C++ understøtter både call by value og call by reference. | Java understøtter kun opkald efter værdi. Der er ingen opkald ved reference i java. |
Struktur og forening | C++ understøtter strukturer og fagforeninger. | Java understøtter ikke strukturer og fagforeninger. |
Trådstøtte | C++ har ikke indbygget understøttelse af tråde. Den er afhængig af tredjepartsbiblioteker til trådunderstøttelse. | Java har indbygget tråd support. |
Dokumentationskommentar | C++ understøtter ikke dokumentationskommentarer. | Java understøtter dokumentationskommentarer (/** ... */) for at skabe dokumentation for java-kildekode. |
Virtuelt nøgleord | C++ understøtter virtuelt søgeord, så vi kan beslutte, om en funktion skal tilsidesættes eller ej. | Java har ikke noget virtuelt nøgleord. Vi kan som standard tilsidesætte alle ikke-statiske metoder. Med andre ord er ikke-statiske metoder virtuelle som standard. |
usigneret højreskift >>> | C++ understøtter ikke >>> operator. | Java understøtter usigneret højreskift >>> operator, der udfylder nul øverst for de negative tal. For positive tal fungerer det på samme måde som >> operator. |
Arvetræ | C++ opretter altid et nyt arvetræ. | Java bruger altid et enkelt arvetræ, fordi alle klasser er underordnede objektklassen i java. Objektklassen er roden til arv træ i java. |
Hardware | C++ er tættere på hardware. | Java er ikke så interaktivt med hardware. |
Objektorienteret | C++ er et objektorienteret sprog. I C-sprog er enkeltrodshierarki dog ikke muligt. | Java er også en objektorienteret Sprog. Men alt (undtagen grundlæggende typer) er et objekt i Java. Det er et enkelt rodhierarki, da alt bliver afledt fra java.lang.Object. |
3) Liste over funktionerne i Java-programmeringssproget.
Der er følgende funktioner i Java Programming Language.
4) Hvad forstår du ved Java virtual machine?
Java virtuel maskine er en virtuel maskine, der gør det muligt for computeren at køre Java-programmet. JVM fungerer som en køretidsmotor, der kalder hovedmetoden i Java-koden. JVM er den specifikation, som skal implementeres i computersystemet. Java-koden er kompileret af JVM til at være en bytekode, som er maskinuafhængig og tæt på den oprindelige kode.
5) Hvad er forskellen mellem JDK, JRE og JVM?
JVM
JVM er et akronym for Java Virtual Machine; det er en abstrakt maskine, som leverer runtime-miljøet, hvor Java-bytekode kan udføres. Det er en specifikation, der specificerer, hvordan Java Virtual Machine fungerer. Implementeringen er leveret af Oracle og andre virksomheder. Dens implementering er kendt som JRE.
JVM'er er tilgængelige til mange hardware- og softwareplatforme (så JVM er platformafhængig). Det er en runtime-instans, som oprettes, når vi kører Java-klassen. Der er tre forestillinger om JVM: specifikation, implementering og instans.
JRE
JRE står for Java Runtime Environment. Det er implementeringen af JVM. Java Runtime Environment er et sæt softwareværktøjer, der bruges til at udvikle Java-applikationer. Det bruges til at levere runtime-miljøet. Det er implementeringen af JVM. Det eksisterer fysisk. Den indeholder et sæt biblioteker + andre filer, som JVM bruger under kørsel.
JDK
JDK er et akronym for Java Development Kit. Det er et softwareudviklingsmiljø, der bruges til at udvikle Java-applikationer og -applets. Det eksisterer fysisk. Den indeholder JRE + udviklingsværktøjer. JDK er en implementering af en af nedenstående Java-platforme udgivet af Oracle Corporation:
- Standard Edition Java-platform
- Enterprise Edition Java-platform
- Micro Edition Java-platform
6) Hvor mange typer hukommelsesområder er allokeret af JVM?
Mange typer:
7) Hvad er JIT compiler?
Just-In-Time (JIT) compiler: Det bruges til at forbedre ydeevnen. JIT kompilerer dele af bytekoden, der har lignende funktionalitet på samme tid, og reducerer dermed den nødvendige tid til kompilering. Her refererer udtrykket compiler til en oversætter fra instruktionssættet af en Java virtuel maskine (JVM) til instruktionssættet for en specifik CPU.
8) Hvad er platformen?
En platform er det hardware- eller softwaremiljø, hvor et stykke software udføres. Der er to typer platforme, software-baserede og hardware-baserede. Java leverer den softwarebaserede platform.
9) Hvad er de vigtigste forskelle mellem Java-platformen og andre platforme?
Der er følgende forskelle mellem Java-platformen og andre platforme.
- Java er den softwarebaserede platform, mens andre platforme kan være hardwareplatforme eller softwarebaserede platforme.
- Java udføres på toppen af andre hardwareplatforme, mens andre platforme kun kan have hardwarekomponenterne.
10) Hvad giver Java sin 'skriv én gang og løb hvor som helst' karakter?
Bytekoden. Java compiler konverterer Java-programmerne til klassefilen (Byte Code), som er mellemsproget mellem kildekode og maskinkode. Denne bytekode er ikke platformsspecifik og kan udføres på enhver computer.
11) Hvad er classloader?
Classloader er et undersystem af JVM, som bruges til at indlæse klassefiler. Når vi kører java-programmet, indlæses det først af klasseindlæseren. Der er tre indbyggede klasseindlæsere i Java.
12) Er Empty .java filnavn et gyldigt kildefilnavn?
Ja, Java tillader at gemme vores java-fil ved .java kun, vi skal kompilere det ved javac .java og løbe forbi java klassenavn Lad os tage et simpelt 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 det af javac .java
køre den forbi java A
13) Er delete, next, main, exit eller null nøgleord i java?
Ingen.
14) Hvis jeg ikke angiver nogen argumenter på kommandolinjen, hvad vil værdien, der er gemt i String-arrayet, så overføres til main()-metoden, tom eller NULL?
Den er tom, men ikke null.
15) Hvad hvis jeg skriver static public void i stedet for public static void?
Programmet kompilerer og kører korrekt, fordi rækkefølgen af specifikationer er ligegyldig i Java.
16) Hvad er standardværdien for de lokale variabler?
De lokale variable initialiseres ikke til nogen standardværdi, hverken primitiver eller objektreferencer.
17) Hvad er de forskellige adgangsspecifikationer i Java?
I Java er adgangsspecifikationer de nøgleord, der bruges til at definere adgangsomfanget for metoden, klassen eller en variabel. I Java er der fire adgangsspecifikationer angivet nedenfor.
18) Hvad er formålet med statiske metoder og variable?
Metoderne eller variablerne, der er defineret som statiske, deles mellem alle klassens objekter. Det statiske er en del af klassen og ikke af objektet. De statiske variable er gemt i klasseområdet, og vi behøver ikke oprette objektet for at få adgang til sådanne variable. Derfor bruges statisk i det tilfælde, hvor vi skal definere variabler eller metoder, som er fælles for alle klassens objekter.
For eksempel, i klassen, der simulerer samlingen af studerende på et kollegium, er kollegiets navn den fælles egenskab for alle eleverne. Derfor vil kollegiets navn blive defineret som statisk .
19) Hvad er fordelene ved Pakker i Java?
Der er forskellige fordele ved at definere pakker i Java.
- Pakker undgår navnesammenstød.
- Pakken giver lettere adgangskontrol.
- Vi kan også have de skjulte klasser, som ikke er synlige udenfor og bruges af pakken.
- Det er nemmere at finde de relaterede klasser.
20) Hvad er outputtet af følgende Java-program?
class Test { public static void main (String args[]) { System.out.println(10 + 20 + 'Javatpoint'); System.out.println('Javatpoint' + 10 + 20); } }
Outputtet af ovenstående kode vil være
30Javatpoint Javatpoint1020
Forklaring
I det første tilfælde behandles 10 og 20 som tal og tilføjes til 30. Nu behandles deres sum 30 som strengen og sammenkædes med strengen Javatpoint . Derfor bliver outputtet 30 Javapoint .
I det andet tilfælde er strengen Javatpoint sammenkædet med 10 for at være strengen Javatpoint 10 som så vil blive sammenkædet med 20 til at være Javatpoint1020 .
21) Hvad er outputtet af følgende Java-program?
class Test { public static void main (String args[]) { System.out.println(10 * 20 + 'Javatpoint'); System.out.println('Javatpoint' + 10 * 20); } }
Outputtet af ovenstående kode vil være
200Javatpoint Javatpoint200
Forklaring
I det første tilfælde vil tallene 10 og 20 blive ganget først, og derefter behandles resultatet 200 som strengen og kædes sammen med strengen Javatpoint at producere output 200 Javapoint .
I det andet tilfælde vil tallene 10 og 20 først blive ganget til 200, fordi multiplikationens forrang er højere end addition. Resultatet 200 vil blive behandlet som strengen og sammenkædet med strengen Javatpoint at producere output som Javatpoint 200 .
22) Hvad er output fra følgende Java-program?
class Test { public static void main (String args[]) { for(int i=0; 0; i++) { System.out.println('Hello Javatpoint'); } } }
Ovenstående kode vil give kompileringstidsfejlen, fordi for-løkken kræver en boolsk værdi i den anden del, og vi giver en heltalsværdi, dvs. 0.
Core Java - OOPs-koncepter: Indledende OOPs-interviewspørgsmål
Der er givet mere end 50 OOPs (Object-Oriented Programming and System) interviewspørgsmål. De er dog blevet kategoriseret i mange sektioner såsom konstruktørinterviewspørgsmål, statiske interviewspørgsmål, arveinterviewspørgsmål, abstraktionsinterviewspørgsmål, Polymorfi-interviewspørgsmål osv. for bedre forståelse.
23) Hvad er objektorienteret paradigme?
Det er et programmeringsparadigme baseret på objekter med data og metoder defineret i den klasse, det tilhører. Objektorienteret paradigme sigter mod at inkorporere fordelene ved modularitet og genanvendelighed. Objekter er forekomster af klasser, der interagerer med hinanden for at designe applikationer og programmer. Der er følgende træk ved det objektorienterede paradigme.
- Følger bottom-up tilgangen i programdesign.
- Fokuser på data med metoder til at operere på objektets data
- Indeholder konceptet som indkapsling og abstraktion, der skjuler kompleksiteten for brugeren og kun viser funktionalitet.
- Implementerer realtidstilgangen som arv, abstraktion osv.
- Eksemplerne på det objektorienterede paradigme er C++, Simula, Smalltalk, Python, C# osv.
24) Hvad er en genstand?
Objektet er realtidsenheden, der har en vis tilstand og adfærd. I Java er Object en instans af klassen med instansvariablerne som objektets tilstand og metoderne som objektets adfærd. Objektet for en klasse kan oprettes ved at bruge ny søgeord.
25) Hvad er forskellen mellem et objektorienteret programmeringssprog og objektbaseret programmeringssprog?
Der er følgende grundlæggende forskelle mellem det objektorienterede sprog og det objektbaserede sprog.
- Objektorienterede sprog følger alle begreberne i OOP'er, hvorimod det objektbaserede sprog ikke følger alle begreberne OOP'er som arv og polymorfi.
- Objektorienterede sprog har ikke de indbyggede objekter, mens objektbaserede sprog har de indbyggede objekter, for eksempel har JavaScript et vinduesobjekt.
- Eksempler på objektorienteret programmering er Java, C#, Smalltalk osv. hvorimod eksemplerne på objektbaserede sprog er JavaScript, VBScript osv.
26) Hvad bliver startværdien af en objektreference, der er defineret som en instansvariabel?
Alle objektreferencer initialiseres til null i Java.
Core Java - OOPs Concepts: Constructor Interview Questions
27) Hvad er konstruktøren?
Konstruktøren kan defineres som den særlige type metode, der bruges til at initialisere et objekts tilstand. Den påkaldes, når klassen instansieres, og hukommelsen allokeres til objektet. Hver gang oprettes et objekt ved hjælp af ny nøgleord, kaldes standardkonstruktøren for klassen. Navnet på konstruktøren skal svare til klassenavnet. Konstruktøren må ikke have en eksplicit returtype.
Flere detaljer.28) Hvor mange typer konstruktører bruges i Java?
Baseret på de parametre, der sendes i konstruktørerne, er der to typer konstruktører i Java.
29) Hvad er formålet med en standardkonstruktør?
Formålet med standardkonstruktøren er at tildele standardværdien til objekterne. Java-kompileren opretter implicit en standardkonstruktør, hvis der ikke er en 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 nu
Produktion:
0 null 0 null
Forklaring: I ovenstående klasse opretter du ikke nogen konstruktør, så compileren giver dig en standardkonstruktør. Her er 0- og null-værdier angivet som standardkonstruktør.
Flere detaljer.
30) Returnerer konstruktør nogen værdi?
Flere år: ja, konstruktøren returnerer implicit den aktuelle forekomst af klassen (Du kan ikke bruge en eksplicit returtype med konstruktøren). Flere detaljer.
31) Er konstruktør nedarvet?
Nej, konstruktøren er ikke nedarvet.
32) Kan du lave en konstruktørfinale?
Nej, konstruktøren kan ikke være endelig.
hvad betyder dette xd
33) Kan vi overbelaste konstruktørerne?
Ja, konstruktørerne kan overbelastes ved at ændre antallet af argumenter, der accepteres af konstruktøren, eller ved at ændre parametrenes datatype. Overvej 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 ovenstående program er konstruktørtesten overbelastet med en anden konstruktør. I det første kald til konstruktøren kaldes konstruktøren med et argument, og i vil blive initialiseret med værdien 10. I det andet kald til konstruktøren kaldes konstruktøren med de 2 argumenter, og i vil blive initialiseret med værdien 15.
34) Hvad forstår du ved kopikonstruktør i Java?
Der er ingen kopikonstruktør i java. Vi kan dog kopiere værdierne fra et objekt til et andet som kopikonstruktør i C++.
Der er mange måder at kopiere værdierne af et objekt til et andet i java. De er:
- Af konstruktør
- Ved at tildele værdierne af et objekt til et andet
- Ved clone() metode af Object klasse
I dette eksempel skal vi kopiere værdierne af et objekt til et andet ved hjælp af 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 nu
Produktion:
111 Karan 111 Karan
35) Hvad er forskellene mellem konstruktørerne og metoderne?
Der er mange forskelle mellem konstruktører og metoder. De er angivet nedenfor.
Java-konstruktør | Java metode |
---|---|
En konstruktør bruges til at initialisere et objekts tilstand. | En metode bruges til at afsløre et objekts adfærd. |
En konstruktør må ikke have en returtype. | En metode skal have en returtype. |
Konstruktøren påkaldes implicit. | Metoden påberåbes eksplicit. |
Java-kompileren giver en standardkonstruktør, hvis du ikke har nogen konstruktør i en klasse. | Metoden er ikke leveret af compileren under alle omstændigheder. |
Konstruktørnavnet skal være det samme som klassenavnet. | Metodens navn kan være det samme som klassenavnet. |
36) Hvad er output fra 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); } }
Resultatet af følgende program er:
a = 10 b = 15
Her bliver datatypen for variablerne a og b, dvs. byte forfremmet til int, og den første parameteriserede konstruktør med de to heltalsparametre kaldes.
37) Hvad er output fra 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); } }
Udgangen af programmet er 0, fordi variablen i er initialiseret til 0 internt. Da vi ved, at en standardkonstruktør påkaldes implicit, hvis der ikke er en konstruktør i klassen, initialiseres variablen i til 0, da der ikke er nogen konstruktør i klassen.
38) Hvad er output fra 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); } }
Der er en compiler fejl i programmet, fordi der er et kald til standardkonstruktøren i hovedmetoden, som ikke er til stede i klassen. Der er dog kun én parametriseret konstruktør i klassen Test. Derfor påkaldes ingen standardkonstruktør implicit af konstruktøren.
Core Java - OOPs-koncepter: statiske søgeord Interviewspørgsmål
39) Hvad er den statiske variabel?
Den statiske variabel bruges til at henvise til fællesejendommen for alle objekter (det er ikke unikt for hvert objekt), f.eks. medarbejdernes firmanavn, universitetsnavn på studerende osv. Statisk variabel får kun hukommelse én gang i klasseområdet kl. tidspunktet for klassens indlæsning. Brug af en statisk variabel gør dit program mere hukommelseseffektivt (det sparer hukommelse). Statisk variabel tilhører klassen snarere end 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 nu
Output:111 Karan ITS 222 Aryan ITS
Flere detaljer.
40) Hvad er den statiske metode?
- En statisk metode tilhører klassen snarere end objektet.
- Der er ingen grund til at oprette objektet for at kalde de statiske metoder.
- En statisk metode kan få adgang til og ændre værdien af den statiske variabel.
41) Hvad er de begrænsninger, der gælder for de statiske Java-metoder?
To hovedrestriktioner anvendes på de statiske metoder.
- Den statiske metode kan ikke bruge et ikke-statisk datamedlem eller kalde den ikke-statiske metode direkte.
- dette og super kan ikke bruges i statisk sammenhæng, da de er ikke-statiske.
42) Hvorfor er hovedmetoden statisk?
Fordi objektet ikke er forpligtet til at kalde den statiske metode. Hvis vi gør hovedmetoden ikke-statisk, skal JVM først oprette sit objekt og derefter kalde main() metoden, hvilket vil føre til den ekstra hukommelsesallokering. Flere detaljer.
43) Kan vi tilsidesætte de statiske metoder?
Nej, vi kan ikke tilsidesætte statiske metoder.
44) Hvad er den statiske blok?
Statisk blok bruges til at initialisere det statiske datamedlem. Den udføres før hovedmetoden, på tidspunktet for klasseindlæsning.
class A2{ static{System.out.println('static block is invoked');} public static void main(String args[]){ System.out.println('Hello main'); } }Test det nu
Output: static block is invoked Hello main
Flere detaljer.
45) Kan vi udføre et program uden main()-metoden?
Svar) Nej, det var muligt før JDK 1.7 ved at bruge den statiske blok. Siden JDK 1.7 er det ikke muligt. Flere detaljer.
46) Hvad hvis den statiske modifikator fjernes fra signaturen på hovedmetoden?
Program kompilerer. Men under runtime, det kaster en fejl 'NoSuchMethodError.'
47) Hvad er forskellen mellem statisk (klasse) metode og instansmetode?
statisk eller klassemetode | instans metode |
---|---|
1) En metode, der er erklæret som statisk, er kendt som den statiske metode. | En metode, der ikke er erklæret som statisk, er kendt som instansmetoden. |
2) Vi behøver ikke oprette objekterne for at kalde de statiske metoder. | Objektet er påkrævet for at kalde instansmetoderne. |
3) Ikke-statiske (instans) medlemmer kan ikke tilgås direkte i den statiske kontekst (statisk metode, statisk blok og statisk indlejret klasse). | Statiske og ikke-statiske variabler kan begge tilgås i instansmetoder. |
4)For eksempel: offentlig statisk int kube(int n){ return n*n*n;} | For eksempel: public void msg(){...}. |
48) Kan vi gøre konstruktører statiske?
Som vi ved, at den statiske kontekst (metode, blok eller variabel) tilhører klassen, ikke objektet. Da konstruktører kun påkaldes, når objektet er oprettet, er der ingen mening i at gøre konstruktørerne statiske. Men hvis du prøver at gøre det, vil compileren vise compilerfejlen.
49) Kan vi gøre de abstrakte metoder statiske i Java?
I Java, hvis vi gør de abstrakte metoder statiske, vil det blive en del af klassen, og vi kan direkte kalde det, hvilket er unødvendigt. At kalde en udefineret metode er fuldstændig ubrugelig, derfor er det ikke tilladt.
50) Kan vi erklære de statiske variable og metoder i en abstrakt klasse?
Ja, vi kan erklære statiske variable og metoder i en abstrakt metode. Da vi ved, at der ikke er noget krav om at få objektet til at få adgang til den statiske kontekst, kan vi derfor få adgang til den statiske kontekst, der er erklæret inde i den abstrakte klasse, ved at bruge navnet på den abstrakte klasse. Overvej 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); } }
Produktion
hi !! I am good !! i = 102
Core Java - OOPs Concepts: Arvsinterviewspørgsmål
51) Hvad er det her søgeord i java?
Det det her nøgleord er en referencevariabel, der refererer til det aktuelle objekt. Der er forskellige anvendelser af dette søgeord i Java. Det kan bruges til at henvise til aktuelle klasseegenskaber såsom instansmetoder, variable, konstruktører osv. Det kan også overføres som et argument til metoderne eller konstruktørerne. Den kan også returneres fra metoden som den aktuelle klasseinstans.
Flere detaljer.
52) Hvad er de vigtigste anvendelser af dette søgeord?
Der er følgende anvendelser af det her søgeord.
53) Kan vi tildele referencen til det her variabel?
Nej, dette kan ikke tildeles nogen værdi, fordi det altid peger på det aktuelle klasseobjekt, og dette er den endelige reference i Java. Men hvis vi prøver at gøre det, vil compilerfejlen blive vist. Overvej 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(); } }
Produktion
Test.java:5: error: cannot assign a value to final variable this this = null; ^ 1 error
54) Kan det her søgeord bruges til at henvise statiske medlemmer?
Ja, det er muligt at bruge dette nøgleord til at henvise til statiske medlemmer, fordi dette kun er en referencevariabel, som refererer til det aktuelle klasseobjekt. Men da vi ved det, er det unødvendigt at få adgang til statiske variabler gennem objekter, derfor er det ikke den bedste praksis at bruge dette til at henvise til statiske medlemmer. Overvej 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(); } }
Produktion
10
55) Hvordan kan constructor chaining udføres ved hjælp af dette søgeord?
Konstruktørkæder gør det muligt for os at kalde en konstruktør fra en anden konstruktør af klassen med hensyn til det aktuelle klasseobjekt. Vi kan bruge dette nøgleord til at udføre konstruktørkæder inden for samme klasse. Overvej følgende eksempel, som illustrerer, hvordan vi kan bruge dette nøgleord til at opnå konstruktørkæde.
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) Hvad er fordelene ved at overføre dette til en metode i stedet for selve det aktuelle klasseobjekt?
Som vi ved, at dette refererer til det aktuelle klasseobjekt, skal det derfor ligne det aktuelle klasseobjekt. Der kan dog være to hovedfordele ved at overføre dette til en metode i stedet for det aktuelle klasseobjekt.
- dette er en endelig variabel. Derfor kan dette ikke tildeles nogen ny værdi, mens det aktuelle klasseobjekt muligvis ikke er endeligt og kan ændres.
- dette kan bruges i den synkroniserede blok.
57) Hvad er arven?
Arv er en mekanisme, hvorved et objekt erhverver alle egenskaber og adfærd for et andet objekt af en anden klasse. Det bruges til genbrug af kode og metodetilsidesættelse. Ideen bag arv i Java er, at du kan oprette nye klasser, der er bygget på eksisterende klasser. Når du arver fra en eksisterende klasse, kan du genbruge metoder og felter i den overordnede klasse. Desuden kan du tilføje nye metoder og felter i din nuværende klasse også. Arv repræsenterer IS-A-forholdet, som også er kendt som et forældre-barn-forhold.
Der er fem typer af arv i Java.
- Et-niveau arv
- Arv på flere niveauer
- Multipel arv
- Hierarkisk arv
- Hybrid arv
Multipel nedarvning er ikke understøttet i Java gennem klasse.
Flere detaljer.58) Hvorfor bruges arv i Java?
Der er forskellige fordele ved at bruge arv i Java, som er angivet nedenfor.
- Arv giver kodegenanvendelighed. Den afledte klasse behøver ikke at omdefinere metoden for basisklassen, medmindre den skal levere den specifikke implementering af metoden.
- Runtime polymorfi kan ikke opnås uden brug af arv.
- Vi kan simulere nedarvningen af klasser med realtidsobjekterne, hvilket gør OOP'er mere realistiske.
- Arv giver dataskjul. Basisklassen kan skjule nogle data fra den afledte klasse ved at gøre den privat.
- Metodetilsidesættelse kan ikke opnås uden arv. Ved metodetilsidesættelse kan vi give en specifik implementering af en eller anden grundlæggende metode indeholdt i basisklassen.
59) Hvilken klasse er superklassen for alle klasserne?
Objektklassen er superklassen af alle andre klasser i Java.
60) Hvorfor understøttes multipel nedarvning ikke i java?
For at reducere kompleksiteten og forenkle sproget understøttes multipel nedarvning ikke i java. Overvej et scenarie, hvor A, B og C er tre klasser. C-klassen arver A- og B-klasserne. Hvis A- og B-klasser har samme metode, og du kalder det fra et underordnet klasseobjekt, vil der være tvetydighed at kalde metoden for A- eller B-klasse.
Da kompileringstidsfejl er bedre end runtimefejl, gengiver Java kompileringstidsfejl, hvis du arver 2 klasser. Så uanset om du har den samme metode eller anderledes, vil der være en kompileringstidsfejl.
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 nu
Compile Time Error
61) Hvad er aggregering?
Aggregation kan defineres som forholdet mellem to klasser, hvor den aggregerede klasse indeholder en reference til den klasse, den ejer. Aggregation beskrives bedst som en har en forhold. For eksempel indeholder den samlede klasse Medarbejder, der har forskellige felter såsom alder, navn og løn, også et objekt af adresseklassen med forskellige felter såsom adresselinje 1, by, stat og pinkode. Med andre ord kan vi sige, at medarbejder (klasse) har et objekt af adresseklasse. Overvej 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(); } }
Produktion
111 varun gzb UP india 112 arun gno UP india
62) Hvad er komposition?
At holde referencen til en klasse inden for en anden klasse er kendt som sammensætning. Når et objekt indeholder det andet objekt, hvis det indeholdte objekt ikke kan eksistere uden eksistensen af et beholderobjekt, så kaldes det komposition. Med andre ord kan vi sige, at sammensætning er det særlige tilfælde af aggregering, som repræsenterer et stærkere forhold mellem to objekter. Eksempel: En klasse indeholder elever. En elev kan ikke eksistere uden en klasse. Der er sammensætning mellem klasse og elever.
63) Hvad er forskellen mellem aggregering og sammensætning?
Aggregation repræsenterer det svage forhold, mens sammensætning repræsenterer det stærke forhold. For eksempel har cyklen en indikator (aggregation), men cyklen har en motor (sammensætning).
64) Hvorfor understøtter Java ikke pointere?
Pointeren er en variabel, der refererer til hukommelsesadressen. De bruges ikke i Java, fordi de er usikre (usikrede) og komplekse at forstå.
65) Hvad er super i java?
Det super nøgleord i Java er en referencevariabel, der bruges til at henvise til det umiddelbare overordnede klasseobjekt. Når du opretter forekomsten af underklassen, oprettes en forekomst af den overordnede klasse implicit, som henvises til af superreferencevariablen. Super() kaldes implicit i klassekonstruktøren af compileren, hvis der ikke er nogen 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 nu
Produktion:
animal is created dog is createdFlere detaljer.
66) Hvordan kan constructor chaining udføres ved at bruge super nøgleordet?
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) Hvad er de vigtigste anvendelser af supersøgeordet?
Der er følgende anvendelser af super nøgleord.
- super kan bruges til at henvise til den umiddelbare overordnede klasseinstansvariabel.
- super kan bruges til at påkalde den umiddelbare overordnede klassemetode.
- super() kan bruges til at fremkalde umiddelbar overordnet klassekonstruktør.
68) Hvad er forskellene mellem dette og supersøgeord?
Der er følgende forskelle mellem dette og supersøgeord.
- Supernøgleordet peger altid på de overordnede klassekontekster, mens dette nøgleord altid peger på den aktuelle klassekontekst.
- Super nøgleordet bruges primært til at initialisere basisklassevariablerne i den afledte klassekonstruktør, hvorimod dette nøgleord primært bruges til at skelne mellem lokale og instansvariabler, når de sendes i klassekonstruktøren.
- Super og dette skal være den første sætning i constructor, ellers vil compileren give en fejl.
69) Hvad er output fra 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(); } }
Produktion
Person class constructor called Employee class constructor called
Forklaring
Super() påkaldes implicit af compileren, hvis ingen super() eller this() er inkluderet eksplicit i den afledte klassekonstruktør. Derfor, i dette tilfælde, kaldes Person-klassekonstruktøren først, og derefter kaldes Employee-klassekonstruktøren.
70) Kan du bruge både denne() og super() i en konstruktør?
Nej, fordi denne() og super() skal være den første sætning 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(); } }
Produktion:
Test.java:5: error: call to this must be first statement in constructor
71) Hvad er objektkloning?
Objektkloningen bruges til at skabe den nøjagtige kopi af et objekt. Clone()-metoden i Object-klassen bruges til at klone et objekt. Det java.lang.Klonbar interface skal implementeres af den klasse, hvis objektklone vi ønsker at oprette. Hvis vi ikke implementerer Cloneable Interface, genererer clone() metoden CloneNotSupportedException.
protected Object clone() throws CloneNotSupportedExceptionFlere detaljer.
Core Java - OOPs-koncepter: Metodeoverbelastning af interviewspørgsmål
72) Hvad er metodeoverbelastning?
Metodeoverbelastning er polymorfiteknikken, som giver os mulighed for at skabe flere metoder med samme navn, men forskellig signatur. Vi kan opnå metodeoverbelastning på to måder.
- Ved at ændre antallet af argumenter
- Ved at ændre datatypen for argumenter
Metodeoverbelastning øger programmets læsbarhed. Metodeoverbelastning udføres for hurtigt at finde ud af programmet.
Flere detaljer.73) Hvorfor er metodeoverbelastning ikke mulig ved at ændre returtypen i java?
I Java er metodeoverbelastning ikke mulig ved at ændre programmets returtype for at undgå tvetydigheden.
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 nu
Produktion:
Compile Time Error: method add(int, int) is already defined in class AdderFlere detaljer.
74) Kan vi overbelaste metoderne ved at gøre dem statiske?
Nej, vi kan ikke overbelaste metoderne ved blot at anvende det statiske nøgleord til dem (antal parametre og typer er de samme). Overvej 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); } }
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 overbelaste main()-metoden?
Ja, vi kan have et hvilket som helst antal hovedmetoder i et Java-program ved at bruge metodeoverbelastning.
Flere detaljer.76) Hvad er metodeoverbelastning med typefremme?
Ved Typepromovering er metodeoverbelastning, mener vi, at én datatype implicit kan forfremmes til en anden, hvis der ikke findes nogen nøjagtig match.
Som vist i diagrammet ovenfor, kan byten forfremmes til kort, int, lang, float eller dobbelt. Den korte datatype kan forfremmes til int, long, float eller double. Char datatypen kan forfremmes til int, long, float eller double og så videre. Overvej 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 nu
Produktion
40 60
77) Hvad er output fra 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 } }
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
Forklaring
Der er to metoder defineret med samme navn, dvs. sum. Den første metode accepterer heltal og lang type, mens den anden metode accepterer lang og heltal type. Parameteren passeret, der er a = 20, b = 20. Vi kan ikke sige, hvilken metode der vil blive kaldt, da der ikke er nogen klar differentiering nævnt mellem heltal-literal og lang literal. Dette er tilfældet med tvetydighed. Derfor vil compileren give en fejl.
Core Java - OOPs-koncepter: Metode, der tilsidesætter interviewspørgsmål
78) Hvad er metodetilsidesættelse:
Hvis en underklasse leverer en specifik implementering af en metode, der allerede er leveret af dens overordnede klasse, er den kendt som metodetilsidesættelse. Det bruges til runtime polymorfi og til at implementere grænseflademetoderne.
Regler for metodetilsidesættelse
- Metoden skal have samme navn som i den overordnede klasse.
- Metoden skal have samme signatur som i den overordnede klasse.
- To klasser skal have et IS-A-forhold mellem sig.
79) Kan vi tilsidesætte den statiske metode?
Nej, du kan ikke tilsidesætte den statiske metode, fordi de er en del af klassen, ikke objektet.
80) Hvorfor kan vi ikke tilsidesætte den statiske metode?
Det er fordi den statiske metode er en del af klassen, og den er bundet til klassen, hvorimod instansmetoden er bundet til objektet, og statisk får hukommelse i klasseområdet, og instans får hukommelse i en heap.
81) Kan vi tilsidesætte den overbelastede metode?
Ja.
82) Forskel mellem metode Overbelastning og Tilsidesættelse.
Metode Overbelastning | Metode tilsidesættelse |
---|---|
1) Metodeoverbelastning øger programmets læsbarhed. | Metodetilsidesættelse giver den specifikke implementering af metoden, som allerede er leveret af dens superklasse. |
2) Metodeoverbelastning forekommer inden for klassen. | Metodetilsidesættelse forekommer i to klasser, der har IS-A-forhold mellem dem. |
3) I dette tilfælde skal parametrene være forskellige. | I dette tilfælde skal parametrene være de samme. |
83) Kan vi tilsidesætte de private metoder?
Nej, vi kan ikke tilsidesætte de private metoder, fordi omfanget af private metoder er begrænset til klassen, og vi kan ikke få adgang til dem uden for klassen.
84) Kan vi ændre omfanget af den overstyrede metode i underklassen?
Ja, vi kan ændre omfanget af den overstyrede metode i underklassen. Vi skal dog bemærke, at vi ikke kan mindske tilgængeligheden af metoden. Følgende punkt skal tages hensyn til, mens metodens tilgængelighed ændres.
- Det private kan ændres til beskyttet, offentligt eller standard.
- Den beskyttede kan ændres til offentlig eller standard.
- Standarden kan ændres til offentlig.
- Offentligheden vil altid forblive offentlig.
85) Kan vi ændre throws-sætningen af superklassemetoden, mens vi tilsidesætter den i underklassen?
Ja, vi kan ændre throws-sætningen af superklassemetoden, mens vi tilsidesætter den i underklassen. Der er dog nogle regler, som skal følges, mens de tilsidesætter i tilfælde af undtagelseshåndtering.
- Hvis superklassemetoden ikke erklærer en undtagelse, kan den underklassetilsidesatte metode ikke erklære den kontrollerede undtagelse, men den kan erklære den umarkerede undtagelse.
- Hvis superklassemetoden erklærer en undtagelse, kan den underklassetilsidesatte metode erklære samme, underklasseundtagelse eller ingen undtagelse, men kan ikke erklære overordnet undtagelse.
86) Hvad er output fra 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); } }
Produktion
Base class method called with integer a = 10
Forklaring
Metoden() er overbelastet i klassen Base, hvorimod den er afledt i klassen Afledt med den dobbelte type som parameter. I metodekaldet sendes hele tallet.
87) Kan du have virtuelle funktioner i Java?
Ja, alle funktioner i Java er virtuelle som standard.
88) Hvad er kovariant returtype?
Siden java5 er det nu muligt at tilsidesætte en hvilken som helst metode ved at ændre returtypen, hvis returtypen for den underklassetilsidesættende metode er underklassetype. Det er kendt som kovariant returtype. Den kovariante returtype angiver, 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 nu
Output: welcome to covariant return typeFlere detaljer.
89) Hvad er output fra 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(); } }
Produktion
Derived method called ...
Forklaring
Metoden til Base-klassen, dvs. baseMethod() er tilsidesat i Afledt klasse. I Test-klassen refererer referencevariablen b (af typen Basisklasse) til forekomsten af den afledte klasse. Her opnås Runtime polymorfi mellem klasse Base og Derived. På kompileringstidspunktet blev tilstedeværelsen af metoden baseMethod kontrolleret i Base-klassen. Hvis den tilstede, så kompilerede programmet ellers vil compilerfejlen blive vist. I dette tilfælde er baseMethod til stede i Base-klassen; derfor er den kompileret med succes. Men ved kørsel tjekker den, om baseMethod er blevet tilsidesat af afledt klasse, hvis det er tilfældet, kaldes den afledte klassemetode ellers kaldes basisklassemetoden. I dette tilfælde tilsidesætter klassen afledt baseMethod; derfor kaldes den Afledte klassemetode.
Core Java - OOPs-koncepter: sidste søgeord Interviewspørgsmål
90) Hvad er den endelige variabel?
I Java bruges den endelige variabel til at begrænse brugeren i at opdatere den. Hvis vi initialiserer den endelige variabel, kan vi ikke ændre dens værdi. Med andre ord kan vi sige, at den endelige variabel, når den først er tildelt en værdi, aldrig kan ændres derefter. Den endelige variabel, som ikke er tildelt nogen værdi, kan kun tildeles gennem klassekonstruktøren.
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 classTest det nu
Output:Compile Time ErrorFlere detaljer.
91) Hvad er den endelige metode?
Hvis vi ændrer en metode til en endelig metode, kan vi ikke tilsidesætte den. Flere 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(); } }Test det nu
Output:Compile Time Error
92) Hvad er den sidste klasse?
Hvis vi laver en klassefinale, kan vi ikke arve den til nogen af underklasserne.
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 nu
Output:Compile Time ErrorFlere detaljer.
93) Hvad er den sidste tomme variabel?
En endelig variabel, der ikke er initialiseret på tidspunktet for erklæringen, er kendt som den endelige tomme variabel. Vi kan ikke initialisere den sidste tomme variabel direkte. I stedet skal vi initialisere det ved at bruge klassekonstruktøren. Det er nyttigt i tilfælde, hvor brugeren har nogle data, som ikke må ændres af andre, for eksempel PAN-nummer. Overvej følgende eksempel:
class Student{ int id; String name; final String PAN_CARD_NUMBER; ... }Flere detaljer.
94) Kan vi initialisere den sidste tomme variabel?
Ja, hvis det ikke er statisk, kan vi initialisere det i konstruktøren. Hvis det er en statisk tom slutvariabel, kan den kun initialiseres i den statiske blok. Flere detaljer.
95) Kan du erklære hovedmetoden som endelig?
Ja, vi kan erklære hovedmetoden som public static final void main(String[] args){}.
96) Hvad er output fra følgende Java-program?
class Main { public static void main(String args[]){ final int i; i = 20; System.out.println(i); } }
Produktion
20
Forklaring
Da i er den tomme endelige variabel. Det kan kun initialiseres én gang. Vi har initialiseret den til 20. Derfor vil 20 blive udskrevet.
97) Hvad er output fra 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(); } }
Produktion
Derived.java:11: error: getInfo() in Derived cannot override getInfo() in Base protected final void getInfo() ^ overridden method is final 1 error
Forklaring
GetDetails() metoden er endelig; derfor kan den ikke tilsidesættes i underklassen.
98) Kan vi erklære en konstruktør som endelig?
Konstruktøren kan aldrig erklæres som endelig, fordi den aldrig nedarves. Konstruktører er ikke almindelige metoder; derfor er der ingen mening i at erklære konstruktører som endelige. Men hvis du prøver at gøre det, vil compileren give en fejl.
99) Kan vi erklære en grænseflade som endelig?
Nej, vi kan ikke erklære en grænseflade som endelig, fordi grænsefladen skal implementeres af en eller anden klasse for at give dens definition. Derfor er der ingen mening i at lave en grænseflade endelig. Men hvis du prøver at gøre det, vil compileren vise en fejl.
100) Hvad er forskellen mellem den endelige metode og den abstrakte metode?
Hovedforskellen mellem den endelige metode og den abstrakte metode er, at den abstrakte metode ikke kan være endelig, da vi skal tilsidesætte dem i underklassen for at give dens definition.