90% asigurare a întrebărilor interviului
Există o listă de 300 de întrebări de bază pentru interviul Java. Dacă vi s-a adresat vreo întrebare de bază pentru interviul Java, vă rugăm să o postați în secțiunea de întrebări. Vă asigurăm că veți primi aici cele 90% dintre întrebările și răspunsurile frecvente la interviu.
Răspunsurile la întrebările interviului Core Java sunt scurte și la obiect. Întrebările de bază ale interviului Java sunt clasificate în întrebările de interviu Basics of Java, întrebările de interviu OOP, întrebările de interviu pentru manipularea șirurilor, întrebările de interviu Multithreading, întrebările de interviu de colecție, întrebările de interviu JDBC etc.
1 2 3 4 5
Core Java: Bazele întrebărilor de interviu Java
1) Ce este Java?
Java este la nivel înalt, orientat pe obiecte , limbaj de programare robust, sigur, independent de platformă, de înaltă performanță, cu mai multe fire și limbaj de programare portabil. A fost dezvoltat de James Gosling în iunie 1991. Poate fi cunoscută și ca platformă, deoarece oferă propriul JRE și API.
2) Care sunt diferențele dintre C++ și Java?
Diferentele dintre C++ și Java sunt date în tabelul următor.
Indicele de comparație | C++ | Java |
---|---|---|
Platforma independenta | C++ este dependent de platformă. | Java este independent de platformă. |
Folosit în principal pentru | C++ este folosit în principal pentru programarea sistemului. | Java este folosit în principal pentru programarea aplicațiilor. Este utilizat pe scară largă în aplicații ferestre, bazate pe web, pentru întreprinderi și mobile. |
Scopul de proiectare | C++ a fost conceput pentru programarea sistemelor și aplicațiilor. A fost o extensie a limbaj de programare C . | Java a fost proiectat și creat ca interpret pentru sistemele de imprimare, dar mai târziu a fost extins ca suport de calcul de rețea. A fost conceput cu scopul de a fi ușor de utilizat și accesibil unui public mai larg. |
Mergi la | C++ acceptă declarația goto. | Java nu acceptă declarația goto. |
Moștenirea multiplă | C++ acceptă moștenirea multiplă. | Java nu acceptă moștenirea multiplă prin clasă. Se poate realiza prin interfețe în java . |
Supraîncărcarea operatorului | C++ suportă supraîncărcarea operatorului . | Java nu acceptă supraîncărcarea operatorului. |
Indicatori | C++ acceptă pointeri. Puteți scrie un program pointer în C++. | Java acceptă pointer intern. Cu toate acestea, nu puteți scrie programul pointer în java. Înseamnă că Java are suport restricționat pentru pointer în Java. |
Compilator și interpret | C++ folosește doar compilatorul. C++ este compilat și rulat folosind compilatorul care convertește codul sursă în cod mașină, astfel încât C++ depinde de platformă. | Java folosește atât compilatorul, cât și interpretorul. Codul sursă Java este convertit în bytecode în momentul compilării. Interpretul execută acest bytecode în timpul rulării și produce rezultate. Java este interpretat de aceea este independent de platformă. |
Apel după valoare și Apel prin referință | C++ acceptă atât apelul după valoare, cât și apelul prin referință. | Java acceptă apeluri numai după valoare. Nu există apel prin referință în Java. |
Structura si Unirea | C++ suportă structuri și uniuni. | Java nu acceptă structuri și uniuni. |
Suport pentru fire | C++ nu are suport încorporat pentru fire. Se bazează pe biblioteci terțe pentru suport pentru fire. | Java are încorporat fir a sustine. |
Comentariu de documentare | C++ nu acceptă comentariul de documentație. | Java acceptă comentariul documentației (/** ... */) pentru a crea documentație pentru codul sursă java. |
Cuvânt cheie virtual | C++ acceptă cuvântul cheie virtual, astfel încât să putem decide dacă înlocuim sau nu o funcție. | Java nu are un cuvânt cheie virtual. Putem suprascrie toate metodele non-statice în mod implicit. Cu alte cuvinte, metodele non-statice sunt virtuale implicit. |
shift dreapta nesemnat >>> | C++ nu acceptă operatorul >>>. | Java acceptă operatorul de deplasare la dreapta nesemnată >>> care completează zero în partea de sus pentru numerele negative. Pentru numere pozitive, funcționează la fel ca operatorul >>. |
Arborele Moștenirii | C++ creează întotdeauna un nou arbore de moștenire. | Java folosește întotdeauna un singur arbore de moștenire, deoarece toate clasele sunt copii ale clasei Object în java. Clasa de obiecte este rădăcina moştenire arbore în java. |
Hardware | C++ este mai aproape de hardware. | Java nu este atât de interactiv cu hardware-ul. |
Orientat pe obiecte | C++ este un limbaj orientat pe obiecte. Cu toate acestea, în limbajul C, ierarhia cu o singură rădăcină nu este posibilă. | Java este, de asemenea, un orientat pe obiecte limba. Totuși, totul (cu excepția tipurilor fundamentale) este un obiect în Java. Este o singură ierarhie rădăcină, deoarece totul este derivat din java.lang.Object. |
3) Enumerați caracteristicile limbajului de programare Java.
Există următoarele caracteristici în limbajul de programare Java.
4) Ce înțelegeți prin mașină virtuală Java?
Mașină virtuală Java este o mașină virtuală care permite computerului să ruleze programul Java. JVM acționează ca un motor de rulare care apelează metoda principală prezentă în codul Java. JVM este specificația care trebuie implementată în sistemul informatic. Codul Java este compilat de JVM pentru a fi un Bytecode care este independent de mașină și apropiat de codul nativ.
5) Care este diferența dintre JDK, JRE și JVM?
JVM
JVM este un acronim pentru Java Virtual Machine; este o mașină abstractă care oferă mediul de rulare în care poate fi executat bytecode Java. Este o specificație care specifică funcționarea mașinii virtuale Java. Implementarea sa a fost asigurată de Oracle și alte companii. Implementarea sa este cunoscută ca JRE.
JVM-urile sunt disponibile pentru multe platforme hardware și software (deci JVM depinde de platformă). Este o instanță de rulare care este creată atunci când rulăm clasa Java. Există trei noțiuni ale JVM: specificație, implementare și instanță.
JRE
JRE înseamnă Java Runtime Environment. Este implementarea JVM. Java Runtime Environment este un set de instrumente software care sunt utilizate pentru dezvoltarea aplicațiilor Java. Este folosit pentru a furniza mediul de rulare. Este implementarea JVM. Ea există fizic. Conține un set de biblioteci + alte fișiere pe care JVM le folosește în timpul rulării.
JDK
JDK este un acronim pentru Java Development Kit. Este un mediu de dezvoltare software care este folosit pentru a dezvolta aplicații și applet-uri Java. Ea există fizic. Conține instrumente de dezvoltare JRE +. JDK este o implementare a oricăreia dintre platformele Java date de mai jos, lansate de Oracle Corporation:
- Platformă Java ediție standard
- Platforma Java Enterprise Edition
- Platforma Java Micro Edition
6) Câte tipuri de zone de memorie sunt alocate de JVM?
Multe tipuri:
7) Ce este compilatorul JIT?
Compilatorul Just-In-Time(JIT): Este folosit pentru a îmbunătăți performanța. JIT compilează părți ale bytecode care au funcționalități similare în același timp și, prin urmare, reduce timpul necesar pentru compilare. Aici termenul de compilator se referă la un traducător de la setul de instrucțiuni al unei mașini virtuale Java (JVM) la setul de instrucțiuni al unui anumit CPU.
8) Ce este platforma?
O platformă este mediul hardware sau software în care este executată o bucată de software. Există două tipuri de platforme, bazate pe software și bazate pe hardware. Java oferă platforma bazată pe software.
9) Care sunt principalele diferențe dintre platforma Java și alte platforme?
Există următoarele diferențe între platforma Java și alte platforme.
- Java este platforma bazată pe software, în timp ce alte platforme pot fi platforme hardware sau platforme bazate pe software.
- Java este executat pe partea de sus a altor platforme hardware, în timp ce alte platforme pot avea doar componente hardware.
10) Ce îi dă lui Java natura „scrie o dată și rulează oriunde”?
Codul octet. Compilatorul Java convertește programele Java în fișierul de clasă (Byte Code) care este limbajul intermediar între codul sursă și codul mașină. Acest bytecode nu este specific platformei și poate fi executat pe orice computer.
11) Ce este classloader?
Classloader este un subsistem JVM care este folosit pentru a încărca fișiere de clasă. Ori de câte ori rulăm programul java, acesta este încărcat mai întâi de classloader. Există trei classloadere încorporate în Java.
12) Este Empty .java file name un nume de fișier sursă valid?
Da, Java permite salvarea fișierului nostru java prin .java numai, trebuie să-l compilam de javac .java și alergat de nume de clasă java Să luăm un exemplu simplu:
//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
compilați-l de javac .java
rulează-l pe lângă java A
13) Este cuvântul cheie delete, next, main, exit sau null în java?
Nu.
14) Dacă nu ofer niciun argument pe linia de comandă, atunci ce valoare stocată în matricea String va fi trecută în metoda main(), goală sau NULL?
Este gol, dar nu nul.
15) Ce se întâmplă dacă scriu static public void în loc de public static void?
Programul se compilează și rulează corect, deoarece ordinea specificatorilor nu contează în Java.
16) Care este valoarea implicită a variabilelor locale?
Variabilele locale nu sunt inițializate la nicio valoare implicită, nici primitive, nici referințe la obiect.
17) Care sunt diferiții specificatori de acces în Java?
În Java, specificatorii de acces sunt cuvintele cheie care sunt utilizate pentru a defini domeniul de acces al metodei, clasei sau unei variabile. În Java, există patru specificatori de acces indicați mai jos.
18) Care este scopul metodelor și variabilelor statice?
Metodele sau variabilele definite ca statice sunt partajate între toate obiectele clasei. Statica este partea clasei și nu a obiectului. Variabilele statice sunt stocate în zona de clasă și nu este nevoie să creăm obiectul pentru a accesa astfel de variabile. Prin urmare, static este folosit în cazul în care trebuie să definim variabile sau metode care sunt comune tuturor obiectelor clasei.
De exemplu, în clasa care simulează colecția studenților dintr-o facultate, numele colegiului este atributul comun tuturor studenților. Prin urmare, numele colegiului va fi definit ca static .
19) Care sunt avantajele pachetelor în Java?
Există diverse avantaje ale definirii pachetelor în Java.
- Pachetele evită ciocnirile de nume.
- Pachetul oferă un control al accesului mai ușor.
- Putem avea și clasele ascunse care nu sunt vizibile în exterior și utilizate de pachet.
- Este mai ușor să localizați clasele aferente.
20) Care este rezultatul următorului program Java?
class Test { public static void main (String args[]) { System.out.println(10 + 20 + 'Javatpoint'); System.out.println('Javatpoint' + 10 + 20); } }
Ieșirea codului de mai sus va fi
30Javatpoint Javatpoint1020
Explicaţie
În primul caz, 10 și 20 sunt tratate ca numere și adăugate pentru a fi 30. Acum, suma lor 30 este tratată ca șir și concatenată cu șirul Javatpoint . Prin urmare, rezultatul va fi 30Javatpoint .
În al doilea caz, șirul Javatpoint este concatenat cu 10 pentru a fi șirul Javatpoint10 care va fi apoi concatenat cu 20 to be Javatpoint1020 .
21) Care este rezultatul următorului program Java?
class Test { public static void main (String args[]) { System.out.println(10 * 20 + 'Javatpoint'); System.out.println('Javatpoint' + 10 * 20); } }
Ieșirea codului de mai sus va fi
200Javatpoint Javatpoint200
Explicaţie
În primul caz, numerele 10 și 20 vor fi înmulțite mai întâi și apoi rezultatul 200 este tratat ca șir și concatenat cu șirul Javatpoint pentru a produce rezultatul 200Javatpoint .
În al doilea caz, numerele 10 și 20 vor fi înmulțite mai întâi pentru a fi 200, deoarece precedența înmulțirii este mai mare decât adunarea. Rezultatul 200 va fi tratat ca șir și concatenat cu șirul Javatpoint pentru a produce ieșirea ca Javatpoint200 .
22) Care este rezultatul următorului program Java?
class Test { public static void main (String args[]) { for(int i=0; 0; i++) { System.out.println('Hello Javatpoint'); } } }
Codul de mai sus va da eroarea de compilare, deoarece bucla for solicită o valoare booleană în a doua parte și oferim o valoare întreagă, adică 0.
Core Java - Concepte OOPs: Întrebări inițiale de interviu OOPs
Sunt oferite peste 50 de întrebări de interviu OOP (Programare și sistem orientate pe obiecte). Cu toate acestea, ele au fost clasificate în multe secțiuni, cum ar fi întrebările interviului pentru constructor, întrebările interviului statice, întrebările interviului privind moștenirea, întrebarea interviului abstracția, întrebările interviului polimorfism etc. pentru o mai bună înțelegere.
23) Ce este paradigma orientată pe obiecte?
Este o paradigmă de programare bazată pe obiecte având date și metode definite în clasa căreia îi aparține. Paradigma orientată pe obiect își propune să încorporeze avantajele modularității și reutilizabilității. Obiectele sunt instanțele claselor care interacționează între ele pentru a proiecta aplicații și programe. Există următoarele caracteristici ale paradigmei orientate pe obiecte.
- Urmează abordarea de jos în sus în proiectarea programelor.
- Concentrați-vă pe date cu metode de a opera asupra datelor obiectului
- Include conceptul precum Encapsulare și abstractizare care ascunde complexitățile de utilizator și arată doar funcționalitatea.
- Implementează abordarea în timp real, cum ar fi moștenirea, abstracția etc.
- Exemplele de paradigmă orientată pe obiecte sunt C++, Simula, Smalltalk, Python, C# etc.
24) Ce este un obiect?
Obiectul este entitatea în timp real care are o anumită stare și comportament. În Java, Object este o instanță a clasei având variabilele de instanță ca stare a obiectului și metodele ca comportament al obiectului. Obiectul unei clase poate fi creat folosind nou cuvânt cheie.
25) Care este diferența dintre un limbaj de programare orientat pe obiecte și un limbaj de programare bazat pe obiecte?
Există următoarele diferențe de bază între limbajul orientat pe obiect și limbajul bazat pe obiecte.
- Limbile orientate pe obiecte urmează toate conceptele de POO, în timp ce limbajul bazat pe obiecte nu urmează toate conceptele de POO, cum ar fi moștenirea și polimorfismul.
- Limbile orientate pe obiecte nu au obiectele încorporate, în timp ce limbajele bazate pe obiecte au obiectele încorporate, de exemplu, JavaScript are obiect fereastră.
- Exemple de programare orientată pe obiecte sunt Java, C#, Smalltalk etc., în timp ce exemplele de limbaje bazate pe obiecte sunt JavaScript, VBScript etc.
26) Care va fi valoarea inițială a unei referințe de obiect care este definită ca o variabilă de instanță?
Toate referințele la obiect sunt inițializate la null în Java.
Core Java - Concepte OOPs: Întrebări de interviu pentru constructori
27) Ce este constructorul?
Constructorul poate fi definit ca tipul special de metodă care este utilizat pentru a inițializa starea unui obiect. Este invocat atunci când clasa este instanțiată, iar memoria este alocată obiectului. De fiecare dată, un obiect este creat folosind nou cuvânt cheie, constructorul implicit al clasei este apelat. Numele constructorului trebuie să fie similar cu numele clasei. Constructorul nu trebuie să aibă un tip de returnare explicit.
Mai multe detalii.28) Câte tipuri de constructori sunt utilizați în Java?
Pe baza parametrilor trecuți în constructori, există două tipuri de constructori în Java.
29) Care este scopul unui constructor implicit?
Scopul constructorului implicit este de a atribui obiectelor valoarea implicită. Compilatorul java creează implicit un constructor implicit dacă nu există niciun constructor în clasă.
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(); } }Testează-l acum
Ieșire:
0 null 0 null
Explicaţie: În clasa de mai sus, nu creați niciun constructor, așa că compilatorul vă oferă un constructor implicit. Aici valorile 0 și nule sunt furnizate de constructorul implicit.
Mai multe detalii.
30) Constructorul returnează vreo valoare?
Ani: da, constructorul returnează implicit instanța curentă a clasei (nu puteți utiliza un tip de returnare explicit cu constructorul). Mai multe detalii.
31) Constructorul este moștenit?
Nu, constructorul nu este moștenit.
32) Puteți face o finală de constructor?
Nu, constructorul nu poate fi final.
indicii în c
33) Putem supraîncărca constructorii?
Da, constructorii pot fi supraîncărcați prin modificarea numărului de argumente acceptate de constructor sau prin modificarea tipului de date al parametrilor. Luați în considerare următorul exemplu.
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); } }
În programul de mai sus, constructorul Test este supraîncărcat cu un alt constructor. În primul apel către constructor, constructorul cu un argument este apelat, iar i va fi inițializat cu valoarea 10. Totuși, în al doilea apel către constructor, constructorul cu cele 2 argumente este apelat și i va fi inițializat cu valoarea 15.
34) Ce înțelegeți prin constructor de copiere în Java?
Nu există un constructor de copiere în java. Cu toate acestea, putem copia valorile de la un obiect la altul ca un constructor de copiere în C++.
Există multe modalități de a copia valorile unui obiect în altul în java. Sunt:
- Prin constructor
- Prin atribuirea valorilor unui obiect altuia
- Prin metoda clone() a clasei Object
În acest exemplu, vom copia valorile unui obiect în altul folosind constructorul java.
//Java program to initialize the values from one object to another class Student6{ int id; String name; //constructor to initialize integer and string Student6(int i,String n){ id = i; name = n; } //constructor to initialize another object Student6(Student6 s){ id = s.id; name =s.name; } void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student6 s1 = new Student6(111,'Karan'); Student6 s2 = new Student6(s1); s1.display(); s2.display(); } }Testează-l acum
Ieșire:
111 Karan 111 Karan
35) Care sunt diferențele dintre constructori și metode?
Există multe diferențe între constructori și metode. Ele sunt date mai jos.
Constructor Java | Metoda Java |
---|---|
Un constructor este folosit pentru a inițializa starea unui obiect. | O metodă este folosită pentru a expune comportamentul unui obiect. |
Un constructor nu trebuie să aibă un tip de returnare. | O metodă trebuie să aibă un tip de returnare. |
Constructorul este invocat implicit. | Metoda este invocată în mod explicit. |
Compilatorul Java oferă un constructor implicit dacă nu aveți niciun constructor într-o clasă. | Metoda nu este furnizată de compilator în niciun caz. |
Numele constructorului trebuie să fie același cu numele clasei. | Numele metodei poate fi sau nu același cu numele clasei. |
36) Care este rezultatul următorului program Java?
public class Test { Test(int a, int b) { System.out.println('a = '+a+' b = '+b); } Test(int a, float b) { System.out.println('a = '+a+' b = '+b); } public static void main (String args[]) { byte a = 10; byte b = 15; Test test = new Test(a,b); } }
Ieșirea următorului program este:
a = 10 b = 15
Aici, tipul de date al variabilelor a și b, adică octetul este promovat la int și este apelat primul constructor parametrizat cu cei doi parametri întregi.
37) Care este rezultatul următorului program Java?
class Test { int i; } public class Main { public static void main (String args[]) { Test test = new Test(); System.out.println(test.i); } }
Ieșirea programului este 0 deoarece variabila i este inițializată la 0 intern. După cum știm că un constructor implicit este invocat implicit dacă nu există niciun constructor în clasă, variabila i este inițializată la 0 deoarece nu există niciun constructor în clasă.
38) Care este rezultatul următorului program Java?
class Test { int test_a, test_b; Test(int a, int b) { test_a = a; test_b = b; } public static void main (String args[]) { Test test = new Test(); System.out.println(test.test_a+' '+test.test_b); } }
Este un eroare de compilator în program deoarece există un apel la constructorul implicit în metoda principală care nu este prezent în clasă. Cu toate acestea, există un singur constructor parametrizat în clasa Test. Prin urmare, niciun constructor implicit nu este invocat de către constructor implicit.
Core Java - Concepte OOP: cuvânt cheie static Întrebări interviu
39) Care este variabila statică?
Variabila statică este folosită pentru a se referi la proprietatea comună a tuturor obiectelor (care nu este unică pentru fiecare obiect), de exemplu, numele companiei angajaților, numele colegiului al studenților etc. Variabila statică primește memorie o singură dată în zona de clasă la timpul de încărcare a clasei. Utilizarea unei variabile statice face ca programul dvs. să fie mai eficient în memorie (economisește memorie). Variabila statică aparține mai degrabă clasei decât obiectului.
//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(); } }Testează-l acum
Output:111 Karan ITS 222 Aryan ITS
Mai multe detalii.
40) Ce este metoda statică?
- O metodă statică aparține mai degrabă clasei decât obiectului.
- Nu este nevoie să creați obiectul pentru a apela metodele statice.
- O metodă statică poate accesa și modifica valoarea variabilei statice.
41) Care sunt restricțiile care se aplică metodelor statice Java?
Două restricții principale sunt aplicate metodelor statice.
- Metoda statică nu poate folosi un membru de date non-static sau apela direct metoda non-statică.
- this și super nu pot fi folosite în context static deoarece sunt non-statice.
42) De ce metoda principală este statică?
Deoarece obiectul nu este necesar să apeleze metoda statică. Dacă facem ca metoda principală să fie nestatică, JVM va trebui să-și creeze mai întâi obiectul și apoi să apeleze metoda main(), ceea ce va duce la alocarea suplimentară de memorie. Mai multe detalii.
43) Putem suprascrie metodele statice?
Nu, nu putem trece peste metodele statice.
44) Ce este blocul static?
Blocul static este utilizat pentru a inițializa membrul de date static. Se execută înainte de metoda principală, în momentul încărcării clasei.
class A2{ static{System.out.println('static block is invoked');} public static void main(String args[]){ System.out.println('Hello main'); } }Testează-l acum
Output: static block is invoked Hello main
Mai multe detalii.
45) Putem executa un program fără metoda main()?
Răspuns) Nu, a fost posibil înainte de JDK 1.7 folosind blocul static. De la JDK 1.7, nu este posibil. Mai multe detalii.
46) Ce se întâmplă dacă modificatorul static este eliminat din semnătura metodei principale?
Programul se compila. Cu toate acestea, în timpul execuției, se afișează o eroare „NoSuchMethodError”.
47) Care este diferența dintre metoda statică (clasă) și metoda instanței?
metoda statică sau de clasă | metoda instanței |
---|---|
1) O metodă care este declarată ca statică este cunoscută ca metoda statică. | O metodă care nu este declarată ca fiind statică este cunoscută ca metoda instanței. |
2) Nu trebuie să creăm obiectele pentru a apela metodele statice. | Obiectul este necesar pentru a apela metodele de instanță. |
3) Membrii nestatici (instanță) nu pot fi accesați direct în context static (metodă statică, bloc static și clasă imbricată statică). | Ambele variabile statice și non-statice pot fi accesate în metodele de instanță. |
4) De exemplu: public static int cube(int n){ return n*n*n;} | De exemplu: public void msg(){...}. |
48) Putem face constructori statici?
După cum știm că contextul static (metodă, bloc sau variabilă) aparține clasei, nu obiectului. Deoarece constructorii sunt invocați numai atunci când obiectul este creat, nu are sens să faceți constructorii statici. Cu toate acestea, dacă încercați să faceți acest lucru, compilatorul va afișa eroarea compilatorului.
49) Putem face metodele abstracte statice în Java?
În Java, dacă facem metodele abstracte statice, va deveni o parte a clasei și o putem numi direct ceea ce este inutil. Apelarea unei metode nedefinite este complet inutilă, prin urmare nu este permisă.
50) Putem declara variabilele și metodele statice într-o clasă abstractă?
Da, putem declara variabile și metode statice într-o metodă abstractă. Deoarece știm că nu există nicio cerință de a face obiectul să acceseze contextul static, prin urmare, putem accesa contextul static declarat în interiorul clasei abstracte folosind numele clasei abstracte. Luați în considerare următorul exemplu.
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); } }
Ieșire
hi !! I am good !! i = 102
Core Java - Concepte OOPs: Întrebări de interviu privind moștenirea
51) Ce este acest cuvânt cheie în java?
The acest cuvântul cheie este o variabilă de referință care se referă la obiectul curent. Există diverse utilizări ale acestui cuvânt cheie în Java. Poate fi folosit pentru a se referi la proprietățile clasei curente, cum ar fi metode de instanță, variabile, constructori etc. Poate fi, de asemenea, transmis ca argument în metode sau constructori. De asemenea, poate fi returnat de la metodă ca instanță de clasă curentă.
Mai multe detalii.
52) Care sunt principalele utilizări ale acestui cuvânt cheie?
Există următoarele utilizări ale acest cuvânt cheie.
53) Putem atribui referința la acest variabil?
Nu, aceasta nu poate fi atribuită nici unei valori, deoarece indică întotdeauna obiectul de clasă curent și aceasta este referința finală în Java. Totuși, dacă încercăm să facem acest lucru, va fi afișată eroarea compilatorului. Luați în considerare următorul exemplu.
public class Test { public Test() { this = null; System.out.println('Test class constructor called'); } public static void main (String args[]) { Test t = new Test(); } }
Ieșire
Test.java:5: error: cannot assign a value to final variable this this = null; ^ 1 error
54) Can acest cuvântul cheie să fie folosit pentru a trimite membri statici?
Da, este posibil să folosiți acest cuvânt cheie pentru a trimite membri statici, deoarece aceasta este doar o variabilă de referință care se referă la obiectul clasei curente. Cu toate acestea, deoarece știm că, nu este necesar să accesați variabile statice prin obiecte, prin urmare, nu este cea mai bună practică să utilizați acest lucru pentru a trimite membri statici. Luați în considerare următorul exemplu.
public class Test { static int i = 10; public Test () { System.out.println(this.i); } public static void main (String args[]) { Test t = new Test(); } }
Ieșire
10
55) Cum se poate realiza înlănțuirea constructorului folosind acest cuvânt cheie?
Înlănțuirea constructorului ne permite să apelăm un constructor de la un alt constructor al clasei în raport cu obiectul clasei curente. Putem folosi acest cuvânt cheie pentru a efectua înlănțuirea constructorului în cadrul aceleiași clase. Luați în considerare următorul exemplu care ilustrează cum putem folosi acest cuvânt cheie pentru a realiza înlănțuirea constructorului.
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); } }
Ieșire
ID: 105 Name:Vikas age:22 address: Delhi
56) Care sunt avantajele trecerii acestui lucru într-o metodă în locul obiectului de clasă curent în sine?
După cum știm, că acesta se referă la obiectul de clasă curent, prin urmare, trebuie să fie similar cu obiectul de clasă curent. Cu toate acestea, pot exista două avantaje principale de a trece acest lucru într-o metodă în locul obiectului de clasă curent.
- aceasta este o variabilă finală. Prin urmare, aceasta nu poate fi atribuită nici unei valori noi, în timp ce obiectul de clasă curent ar putea să nu fie final și poate fi modificat.
- aceasta poate fi folosită în blocul sincronizat.
57) Ce este Moștenirea?
Moștenirea este un mecanism prin care un obiect dobândește toate proprietățile și comportamentul altui obiect dintr-o altă clasă. Este folosit pentru reutilizarea codului și suprascrierea metodei. Ideea din spatele moștenirii în Java este că puteți crea clase noi care sunt construite pe clasele existente. Când moșteniți dintr-o clasă existentă, puteți reutiliza metode și câmpuri ale clasei părinte. Mai mult, puteți adăuga noi metode și câmpuri și în clasa dvs. curentă. Moștenirea reprezintă relația IS-A care este cunoscută și ca relație părinte-copil.
Există cinci tipuri de moștenire în Java.
- Moștenire pe un singur nivel
- Moștenire pe mai multe niveluri
- Moștenirea multiplă
- Moștenirea ierarhică
- Moștenirea hibridă
Moștenirea multiplă nu este acceptată în Java prin clasă.
Mai multe detalii.58) De ce este folosită moștenirea în Java?
Există diverse avantaje ale utilizării moștenirii în Java, care sunt prezentate mai jos.
- Moștenirea asigură reutilizarea codului. Clasa derivată nu trebuie să redefinească metoda clasei de bază decât dacă trebuie să furnizeze implementarea specifică a metodei.
- Polimorfismul runtime nu poate fi realizat fără utilizarea moștenirii.
- Putem simula moștenirea claselor cu obiectele în timp real, ceea ce face OOP-urile mai realiste.
- Moștenirea oferă ascunderea datelor. Clasa de bază poate ascunde unele date din clasa derivată făcând-o privată.
- Depășirea metodei nu poate fi realizată fără moștenire. Prin suprascrierea metodei, putem oferi o implementare specifică a unei metode de bază conținute de clasa de bază.
59) Care clasă este superclasa pentru toate clasele?
Clasa obiect este superclasa tuturor celorlalte clase din Java.
60) De ce moștenirea multiplă nu este acceptată în java?
Pentru a reduce complexitatea și a simplifica limbajul, moștenirea multiplă nu este acceptată în java. Luați în considerare un scenariu în care A, B și C sunt trei clase. Clasa C moștenește clasele A și B. Dacă clasele A și B au aceeași metodă și o numiți din obiectul clasei copil, va exista ambiguitate în a apela metoda clasei A sau B.
Deoarece erorile de timp de compilare sunt mai bune decât erorile de rulare, Java redă o eroare de timp de compilare dacă moșteniți 2 clase. Deci, indiferent dacă aveți aceeași metodă sau diferită, va exista o eroare de timp de compilare.
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? } }Testează-l acum
Compile Time Error
61) Ce este agregarea?
Agregarea poate fi definită ca relația dintre două clase în care clasa agregată conține o referință la clasa pe care o deține. Agregarea este cel mai bine descrisă ca a are o relaţie. De exemplu, Clasa agregată Angajat care are diverse câmpuri, cum ar fi vârsta, numele și salariul, conține, de asemenea, un obiect din clasa Adresă, care are diverse câmpuri, cum ar fi Adresa-Linia 1, Orașul, Statul și codul PIN. Cu alte cuvinte, putem spune că Employee (clasa) are un obiect al clasei Address. Luați în considerare următorul exemplu.
Adresă.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; } }
Angajat.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(); } }
Ieșire
111 varun gzb UP india 112 arun gno UP india
62) Ce este compoziția?
Menținerea referinței unei clase în cadrul unei alte clase este cunoscută sub numele de compoziție. Când un obiect conține celălalt obiect, dacă obiectul conținut nu poate exista fără existența obiectului container, atunci se numește compoziție. Cu alte cuvinte, putem spune că compoziția este cazul particular de agregare care reprezintă o relație mai puternică între două obiecte. Exemplu: O clasă conține elevi. Un elev nu poate exista fără clasă. Există o compoziție între clasă și elevi.
63) Care este diferența dintre agregare și compoziție?
Agregarea reprezintă relația slabă, în timp ce compoziția reprezintă relația puternică. De exemplu, bicicleta are un indicator (agregare), dar bicicleta are un motor (compoziție).
64) De ce Java nu acceptă pointerii?
Pointerul este o variabilă care se referă la adresa de memorie. Ele nu sunt folosite în Java deoarece sunt nesigure (nesecurizate) și complexe de înțeles.
65) Ce este super în java?
The super cuvântul cheie în Java este o variabilă de referință care este folosită pentru a se referi la obiectul clasei părinte imediate. Ori de câte ori creați o instanță a subclasei, este creată implicit o instanță a clasei părinte care este referită prin variabila super referință. Super() este apelat implicit în constructorul clasei de către compilator dacă nu există super sau acesta.
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(); } }Testează-l acum
Ieșire:
animal is created dog is createdMai multe detalii.
66) Cum se poate realiza înlănțuirea constructorului folosind cuvântul cheie super?
class Person { String name,address; int age; public Person(int age, String name, String address) { this.age = age; this.name = name; this.address = address; } } class Employee extends Person { float salary; public Employee(int age, String name, String address, float salary) { super(age,name,address); this.salary = salary; } } public class Test { public static void main (String args[]) { Employee e = new Employee(22, 'Mukesh', 'Delhi', 90000); System.out.println('Name: '+e.name+' Salary: '+e.salary+' Age: '+e.age+' Address: '+e.address); } }
Ieșire
Name: Mukesh Salary: 90000.0 Age: 22 Address: Delhi
67) Care sunt principalele utilizări ale cuvântului cheie super?
Există următoarele utilizări ale cuvântului cheie super.
- super poate fi folosit pentru a se referi la variabila de instanță a clasei părinte imediate.
- super poate fi folosit pentru a invoca metoda clasei părinte imediate.
- super() poate fi folosit pentru a invoca constructorul imediat al clasei părinte.
68) Care sunt diferențele dintre acest cuvânt cheie și super-cheie?
Există următoarele diferențe între acest cuvânt și super-cheie.
- Cuvântul cheie super indică întotdeauna contextul clasei părinte, în timp ce acest cuvânt cheie indică întotdeauna contextul clasei curente.
- Cuvântul cheie super este folosit în primul rând pentru inițializarea variabilelor clasei de bază în constructorul de clasă derivată, în timp ce acest cuvânt cheie este folosit în principal pentru a diferenția între variabilele locale și de instanță atunci când este transmis în constructorul de clasă.
- Super și aceasta trebuie să fie prima declarație din constructor, altfel compilatorul va arunca o eroare.
69) Care este rezultatul următorului program Java?
class Person { public Person() { System.out.println('Person class constructor called'); } } public class Employee extends Person { public Employee() { System.out.println('Employee class constructor called'); } public static void main (String args[]) { Employee e = new Employee(); } }
Ieșire
Person class constructor called Employee class constructor called
Explicaţie
Super() este invocat implicit de compilator dacă niciun super() sau this() nu este inclus în mod explicit în constructorul de clasă derivată. Prin urmare, în acest caz, constructorul clasei Persoană este apelat mai întâi și apoi constructorul clasei Angajat.
70) Puteți folosi this() și super() ambele într-un constructor?
Nu, deoarece this() și super() trebuie să fie prima instrucțiune din constructorul clasei.
Exemplu:
public class Test{ Test() { super(); this(); System.out.println('Test class object is created'); } public static void main(String []args){ Test t = new Test(); } }
Ieșire:
Test.java:5: error: call to this must be first statement in constructor
71) Ce este clonarea obiectelor?
Clonarea obiectului este folosită pentru a crea copia exactă a unui obiect. Metoda clone() a clasei Object este folosită pentru a clona un obiect. The java.lang.Cloneable interfața trebuie implementată de clasa a cărei clonă de obiect dorim să o creăm. Dacă nu implementăm interfața Cloneable, metoda clone() generează CloneNotSupportedException.
protected Object clone() throws CloneNotSupportedExceptionMai multe detalii.
Core Java - Concepte OOPs: Întrebări de interviu de supraîncărcare a metodei
72) Ce este supraîncărcarea metodei?
Supraîncărcarea metodelor este tehnica polimorfismului care ne permite să creăm mai multe metode cu același nume, dar semnătură diferită. Putem realiza supraîncărcarea metodei în două moduri.
- Prin Schimbarea numărului de argumente
- Prin Schimbarea tipului de date al argumentelor
Supraîncărcarea metodei crește lizibilitatea programului. Supraîncărcarea metodei este efectuată pentru a înțelege rapid programul.
Mai multe detalii.73) De ce nu este posibilă supraîncărcarea metodei prin schimbarea tipului de returnare în java?
În Java, supraîncărcarea metodei nu este posibilă prin schimbarea tipului de returnare al programului pentru a evita ambiguitatea.
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 }}Testează-l acum
Ieșire:
Compile Time Error: method add(int, int) is already defined in class AdderMai multe detalii.
74) Putem supraîncărca metodele făcându-le statice?
Nu, nu putem supraîncărca metodele doar aplicând cuvântul cheie static acestora (numărul de parametri și tipuri sunt aceleași). Luați în considerare următorul exemplu.
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); } }
Ieșire
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) Putem supraîncărca metoda main()?
Da, putem avea orice număr de metode principale într-un program Java utilizând supraîncărcarea metodelor.
Mai multe detalii.76) Ce este supraîncărcarea metodei cu promovarea tipului?
Promovarea prin tip este o supraîncărcare a metodei, ne referim la faptul că un tip de date poate fi promovat la altul implicit dacă nu se găsește o potrivire exactă.
După cum este afișat în diagrama de mai sus, octetul poate fi promovat la short, int, long, float sau double. Tipul de date scurt poate fi promovat la int, long, float sau double. Tipul de date char poate fi promovat la int, long, float sau double și așa mai departe. Luați în considerare următorul exemplu.
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); } }Testează-l acum
Ieșire
40 60
77) Care este rezultatul următorului program Java?
class OverloadingCalculation3{ void sum(int a,long b){System.out.println('a method invoked');} void sum(long a,int b){System.out.println('b method invoked');} public static void main(String args[]){ OverloadingCalculation3 obj=new OverloadingCalculation3(); obj.sum(20,20);//now ambiguity } }
Ieșire
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
Explicaţie
Există două metode definite cu același nume, adică suma. Prima metodă acceptă tipul întreg și lung, în timp ce a doua metodă acceptă tipul lung și întreg. Parametrul trecut care sunt a = 20, b = 20. Nu putem spune ce metodă va fi numită deoarece nu există nicio diferențiere clară menționată între literal întreg și literal lung. Acesta este cazul ambiguității. Prin urmare, compilatorul va arunca o eroare.
Core Java - Concepte OOPs: Întrebări de interviu de înlocuire a metodei
78) Ce este anularea metodei:
Dacă o subclasă oferă o implementare specifică a unei metode care este deja furnizată de clasa sa părinte, aceasta este cunoscută sub numele de Suprascrierea metodei. Este folosit pentru polimorfismul runtime și pentru implementarea metodelor de interfață.
Reguli pentru înlocuirea metodei
- Metoda trebuie să aibă același nume ca și în clasa părinte.
- Metoda trebuie să aibă aceeași semnătură ca în clasa părinte.
- Două clase trebuie să aibă o relație IS-A între ele.
79) Putem suprascrie metoda statică?
Nu, nu puteți suprascrie metoda statică, deoarece acestea sunt o parte a clasei, nu obiectul.
80) De ce nu putem trece peste metoda statică?
Se datorează faptului că metoda statică este o parte a clasei și este legată de clasă, în timp ce metoda instanței este legată de obiect, iar static primește memorie în zona clasei, iar instanța primește memorie într-un heap.
81) Putem suprascrie metoda supraîncărcată?
Da.
82) Diferența dintre metoda Overloading și Overriding.
Supraîncărcarea metodei | Suprascrierea metodei |
---|---|
1) Supraîncărcarea metodei crește lizibilitatea programului. | Suprascrierea metodei oferă implementarea specifică a metodei care este deja furnizată de superclasa sa. |
2) Supraîncărcarea metodei are loc în cadrul clasei. | Suprascrierea metodei are loc în două clase care au relație IS-A între ele. |
3) În acest caz, parametrii trebuie să fie diferiți. | În acest caz, parametrii trebuie să fie aceiași. |
83) Putem trece peste metodele private?
Nu, nu putem suprascrie metodele private deoarece domeniul de aplicare al metodelor private este limitat la clasă și nu le putem accesa în afara clasei.
84) Putem schimba domeniul de aplicare al metodei suprascrise în subclasă?
Da, putem schimba domeniul de aplicare al metodei suprascrise în subclasă. Totuși, trebuie să observăm că nu putem reduce accesibilitatea metodei. Următorul punct trebuie avut grijă în timp ce se schimbă accesibilitatea metodei.
- Privat poate fi schimbat în protejat, public sau implicit.
- Protejat poate fi schimbat în public sau implicit.
- Valoarea implicită poate fi schimbată în public.
- Publicul va rămâne întotdeauna public.
85) Putem modifica clauza throws a metodei superclasei în timp ce o suprascriem în subclasă?
Da, putem modifica clauza throws a metodei superclasei în timp ce o suprascriem în subclasă. Cu toate acestea, există unele reguli care trebuie urmate în timp ce se anulează în cazul gestionării excepțiilor.
- Dacă metoda superclasei nu declară o excepție, metoda suprascrisă subclasă nu poate declara excepția verificată, dar poate declara excepția neverificată.
- Dacă metoda superclasă declară o excepție, metoda suprascrisă subclasă poate declara aceeași excepție, excepție subclasă sau nicio excepție, dar nu poate declara excepția părinte.
86) Care este rezultatul următorului program Java?
class Base { void method(int a) { System.out.println('Base class method called with integer a = '+a); } void method(double d) { System.out.println('Base class method called with double d ='+d); } } class Derived extends Base { @Override void method(double d) { System.out.println('Derived class method called with double d ='+d); } } public class Main { public static void main(String[] args) { new Derived().method(10); } }
Ieșire
Base class method called with integer a = 10
Explicaţie
Metoda() este supraîncărcată în clasa Base, în timp ce este derivată în clasa Derived cu tipul dublu ca parametru. În apelul de metodă, numărul întreg este transmis.
87) Puteți avea funcții virtuale în Java?
Da, toate funcțiile din Java sunt virtuale implicit.
88) Ce este tipul de returnare covariant?
Acum, de la java5, este posibil să se suprascrie orice metodă prin schimbarea tipului de returnare dacă tipul de returnare al metodei de suprascrire a subclasei este tipul de subclasă. Este cunoscut ca tip de returnare covariant. Tipul de returnare covariant specifică faptul că tipul de returnare poate varia în aceeași direcție cu subclasa.
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(); } }Testează-l acum
Output: welcome to covariant return typeMai multe detalii.
89) Care este rezultatul următorului program Java?
class Base { public void baseMethod() { System.out.println('BaseMethod called ...'); } } class Derived extends Base { public void baseMethod() { System.out.println('Derived method called ...'); } } public class Test { public static void main (String args[]) { Base b = new Derived(); b.baseMethod(); } }
Ieșire
Derived method called ...
Explicaţie
Metoda clasei de bază, adică baseMethod() este suprascrisă în clasa Derived. În clasa Test, variabila de referință b (de tip Clasă de bază) se referă la instanța clasei Derivate. Aici, polimorfismul Runtime este realizat între clasa Base și Derived. În momentul compilării, prezența metodei baseMethod verificată în clasa de bază, dacă este prezență, programul compilat altfel va fi afișată eroarea compilatorului. În acest caz, baseMethod este prezentă în clasa de bază; prin urmare, este compilat cu succes. Cu toate acestea, în timpul execuției, verifică dacă metoda de bază a fost suprascrisă de către clasa Derived, dacă da, atunci metoda clasei derivate este apelată, altfel este apelată metoda clasei de bază. În acest caz, clasa Derived suprascrie metoda de bază; prin urmare, se apelează la metoda clasei derivate.
Core Java - Concepte OOP: cuvânt cheie final Întrebări interviu
90) Care este variabila finală?
În Java, variabila finală este folosită pentru a restricționa utilizatorul să o actualizeze. Dacă inițializam variabila finală, nu îi putem schimba valoarea. Cu alte cuvinte, putem spune că variabila finală, odată atribuită unei valori, nu mai poate fi schimbată după aceea. Variabila finală care nu este atribuită nici unei valori poate fi atribuită doar prin constructorul clasei.
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 classTestează-l acum
Output:Compile Time ErrorMai multe detalii.
91) Care este metoda finală?
Dacă schimbăm orice metodă cu o metodă finală, nu o putem suprascrie. Mai multe detalii.
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(); } }Testează-l acum
Output:Compile Time Error
92) Care este clasa finală?
Dacă facem o clasă finală, nu o putem moșteni în niciuna dintre subclase.
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(); } }Testează-l acum
Output:Compile Time ErrorMai multe detalii.
93) Care este variabila goală finală?
O variabilă finală, neinițializată în momentul declarării, este cunoscută ca variabilă finală goală. Nu putem inițializa direct variabila finală goală. În schimb, trebuie să-l inițializam folosind constructorul de clasă. Este util în cazul în care utilizatorul are unele date care nu trebuie modificate de alții, de exemplu, PAN Number. Luați în considerare următorul exemplu:
class Student{ int id; String name; final String PAN_CARD_NUMBER; ... }Mai multe detalii.
94) Putem inițializa variabila finală goală?
Da, dacă nu este static, îl putem inițializa în constructor. Dacă este o variabilă finală static blank, poate fi inițializată doar în blocul static. Mai multe detalii.
95) Puteți declara metoda principală ca finală?
Da, putem declara metoda principală ca public static final void main(String[] args){}.
96) Care este rezultatul următorului program Java?
class Main { public static void main(String args[]){ final int i; i = 20; System.out.println(i); } }
Ieșire
20
Explicaţie
Deoarece i este variabila finală goală. Poate fi inițializat o singură dată. L-am inițializat la 20. Prin urmare, 20 vor fi tipărite.
97) Care este rezultatul următorului program Java?
class Base { protected final void getInfo() { System.out.println('method of Base class'); } } public class Derived extends Base { protected final void getInfo() { System.out.println('method of Derived class'); } public static void main(String[] args) { Base obj = new Base(); obj.getInfo(); } }
Ieșire
Derived.java:11: error: getInfo() in Derived cannot override getInfo() in Base protected final void getInfo() ^ overridden method is final 1 error
Explicaţie
Metoda getDetails() este finală; prin urmare, nu poate fi suprascris în subclasă.
98) Putem declara un constructor ca final?
Constructorul nu poate fi niciodată declarat ca final deoarece nu este niciodată moștenit. Constructorii nu sunt metode obișnuite; prin urmare, nu are sens să declari constructori ca finali. Cu toate acestea, dacă încercați să faceți acest lucru, compilatorul va arunca o eroare.
99) Putem declara o interfață ca finală?
Nu, nu putem declara o interfață ca finală deoarece interfața trebuie implementată de o clasă pentru a oferi definiția acesteia. Prin urmare, nu are sens să facem o interfață finală. Cu toate acestea, dacă încercați să faceți acest lucru, compilatorul va afișa o eroare.
100) Care este diferența dintre metoda finală și metoda abstractă?
Principala diferență dintre metoda finală și metoda abstractă este că metoda abstractă nu poate fi finală, deoarece trebuie să le înlocuim în subclasă pentru a-i da definiția.