90% pokalbio klausimų garantija
Yra 300 pagrindinių „Java“ interviu klausimų sąrašas. Jei jums buvo užduotas koks nors pagrindinis „Java“ interviu klausimas, maloniai prašome paskelbti jį klausimo skiltyje. Užtikriname, kad čia gausite 90% dažniausiai užduodamų interviu klausimų ir atsakymų.
Atsakymai į Core Java interviu klausimus yra trumpi ir tikslūs. Pagrindiniai „Java“ interviu klausimai yra suskirstyti į „Java“ interviu klausimų pagrindų, „OOP“ interviu klausimų, „String Handling“ interviu klausimų, kelių gijų interviu klausimų, kolekcijos interviu klausimų, JDBC interviu klausimų ir kt.
1 2 3 4 5
Pagrindinė „Java“: „Java“ interviu klausimų pagrindai
1) Kas yra Java?
Java yra aukšto lygio, orientuota į objektą , tvirta, saugi programavimo kalba, nuo platformos nepriklausoma, didelio našumo, daugiagija ir nešiojama programavimo kalba. Jį sukūrė Jamesas Goslingas 1991 m. birželio mėn. Ji taip pat gali būti žinoma kaip platforma, nes ji teikia savo JRE ir API.
2) Kuo skiriasi C++ ir Java?
Skirtumai tarp C++ ir Java yra pateikti šioje lentelėje.
Palyginimo indeksas | C++ | Java |
---|---|---|
Nuo platformos nepriklausomas | C++ priklauso nuo platformos. | „Java“ yra nepriklausoma nuo platformos. |
Daugiausia naudojamas | C++ dažniausiai naudojamas sistemos programavimui. | Java daugiausia naudojama programų programavimui. Jis plačiai naudojamas langų, žiniatinklio, įmonės ir mobiliosiose programose. |
Dizaino tikslas | C++ buvo sukurtas sistemų ir programų programavimui. Tai buvo pratęsimas C programavimo kalba . | „Java“ buvo sukurta ir sukurta kaip spausdinimo sistemų vertėjas, tačiau vėliau buvo išplėsta kaip tinklo skaičiavimo palaikymas. Jis buvo sukurtas siekiant, kad jį būtų lengva naudoti ir jis būtų prieinamas platesnei auditorijai. |
Eiti į | C++ palaiko goto teiginį. | Java nepalaiko goto teiginio. |
Daugialypis paveldėjimas | C++ palaiko daugialypį paveldėjimą. | Java nepalaiko kelių paveldėjimo per klasę. Tai galima pasiekti naudojant sąsajos java . |
Operatoriaus perkrova | C++ palaiko operatoriaus perkrova . | „Java“ nepalaiko operatoriaus perkrovos. |
Rodyklės | C++ palaiko rodykles. Galite rašyti žymeklio programą C++ kalba. | Java palaiko rodyklę viduje. Tačiau jūs negalite rašyti rodyklės programos Java. Tai reiškia, kad „Java“ programoje „Java“ yra apribotas žymeklio palaikymas. |
Kompiliatorius ir vertėjas | C++ naudoja tik kompiliatorių. C++ yra kompiliuojamas ir paleistas naudojant kompiliatorių, kuris konvertuoja šaltinio kodą į mašininį kodą, todėl C++ priklauso nuo platformos. | Java naudoja ir kompiliatorių, ir interpretatorių. Kompiliavimo metu Java šaltinio kodas konvertuojamas į baitinį kodą. Vertėjas vykdo šį baito kodą vykdymo metu ir sukuria išvestį. „Java“ yra aiškinama, todėl ji nepriklauso nuo platformos. |
Skambinkite pagal vertę ir skambinkite pagal nuorodą | C++ palaiko ir skambutį pagal vertę, ir skambutį pagal nuorodą. | Java palaiko tik skambutį pagal vertę. Java kalboje nėra skambučio pagal nuorodą. |
Struktūra ir Sąjunga | C++ palaiko struktūras ir sąjungas. | „Java“ nepalaiko struktūrų ir sąjungų. |
Siūlų palaikymas | C++ neturi integruoto gijų palaikymo. Ji remiasi trečiųjų šalių bibliotekomis gijų palaikymui. | „Java“ yra įmontuota siūlas parama. |
Dokumentacijos komentaras | C++ nepalaiko dokumentacijos komentarų. | „Java“ palaiko dokumentacijos komentarą (/** ... */), kad būtų galima sukurti „Java“ šaltinio kodo dokumentus. |
Virtualus raktinis žodis | C++ palaiko virtualų raktinį žodį, kad galėtume nuspręsti, ar nepaisyti funkcijos. | „Java“ neturi virtualaus raktinio žodžio. Pagal numatytuosius nustatymus galime nepaisyti visų nestatinių metodų. Kitaip tariant, nestatiniai metodai pagal numatytuosius nustatymus yra virtualūs. |
nepasirašytas poslinkis į dešinę >>> | C++ nepalaiko >>> operatoriaus. | „Java“ palaiko nepasirašytą dešinįjį poslinkį >>>, kuris neigiamų skaičių viršuje užpildo nulį. Teigiamų skaičių atveju tai veikia taip pat, kaip >> operatorius. |
Paveldėjimo medis | C++ visada sukuria naują paveldėjimo medį. | „Java“ visada naudoja vieną paveldėjimo medį, nes visos klasės yra „Java“ objektų klasės antrinės klasės. Objekto klasė yra šaknis paveldėjimo medis java. |
Aparatūra | C++ yra arčiau aparatinės įrangos. | „Java“ nėra tokia interaktyvi su aparatine įranga. |
Objektinis | C++ yra į objektą orientuota kalba. Tačiau C kalboje vienos šaknies hierarchija neįmanoma. | Java taip pat yra orientuota į objektą kalba. Tačiau viskas (išskyrus pagrindinius tipus) yra Java objektas. Tai yra vienos šaknies hierarchija, nes viskas gaunama iš java.lang.Object. |
3) Išvardykite Java programavimo kalbos ypatybes.
Yra šios „Java“ programavimo kalbos funkcijos.
4) Ką jūs suprantate iš „Java“ virtualios mašinos?
Java virtuali mašina yra virtuali mašina, leidžianti kompiuteriui paleisti Java programą. JVM veikia kaip vykdymo laiko variklis, kuris iškviečia pagrindinį metodą, esantį Java kode. JVM yra specifikacija, kuri turi būti įdiegta kompiuterinėje sistemoje. „Java“ kodą sudaro JVM kaip baitinį kodą, kuris yra nepriklausomas nuo mašinos ir yra artimas vietiniam kodui.
5) Kuo skiriasi JDK, JRE ir JVM?
JVM
JVM yra Java virtualios mašinos akronimas; tai abstrakti mašina, kuri suteikia vykdymo aplinką, kurioje galima vykdyti Java baitinį kodą. Tai specifikacija, nurodanti „Java“ virtualiosios mašinos veikimą. Jį įgyvendino „Oracle“ ir kitos įmonės. Jo įgyvendinimas žinomas kaip JRE.
JVM yra prieinami daugeliui aparatinės ir programinės įrangos platformų (taigi JVM priklauso nuo platformos). Tai vykdymo laiko egzempliorius, kuris sukuriamas, kai vykdome „Java“ klasę. Yra trys JVM sąvokos: specifikacija, įgyvendinimas ir egzempliorius.
JRE
JRE reiškia Java Runtime Environment. Tai JVM įgyvendinimas. „Java Runtime Environment“ yra programinės įrangos įrankių rinkinys, naudojamas „Java“ programoms kurti. Jis naudojamas vykdymo aplinkai teikti. Tai JVM įgyvendinimas. Jis fiziškai egzistuoja. Jame yra bibliotekų rinkinys ir kiti failai, kuriuos JVM naudoja vykdymo metu.
JDK
JDK yra Java Development Kit akronimas. Tai programinės įrangos kūrimo aplinka, naudojama Java programoms ir programėlėms kurti. Jis fiziškai egzistuoja. Jame yra JRE + kūrimo įrankiai. JDK yra bet kurios iš toliau pateiktų „Oracle Corporation“ išleistų „Java“ platformų įgyvendinimas:
- Standartinio leidimo Java platforma
- Enterprise Edition Java platforma
- Micro Edition Java platforma
6) Kiek tipų atminties sričių skiria JVM?
Daug rūšių:
7) Kas yra JIT kompiliatorius?
„Just-In-Time“ (JIT) kompiliatorius: Jis naudojamas našumui pagerinti. JIT tuo pačiu metu kompiliuoja baitinio kodo dalis, kurios turi panašias funkcijas, taigi sumažina kompiliavimui reikalingą laiką. Čia terminas kompiliatorius reiškia vertėją iš Java virtualios mašinos (JVM) instrukcijų rinkinio į konkretaus procesoriaus instrukcijų rinkinį.
8) Kas yra platforma?
Platforma yra aparatinės arba programinės įrangos aplinka, kurioje vykdoma programinės įrangos dalis. Yra dviejų tipų platformos: programinės įrangos ir aparatinės įrangos. „Java“ teikia programine įranga pagrįstą platformą.
9) Kokie yra pagrindiniai Java platformos ir kitų platformų skirtumai?
Tarp Java platformos ir kitų platformų yra šie skirtumai.
- „Java“ yra programinės įrangos platforma, o kitos platformos gali būti aparatinės įrangos arba programinės įrangos platformos.
- „Java“ vykdoma kitų aparatinės įrangos platformų viršuje, o kitose platformose gali būti tik aparatinės įrangos komponentai.
10) Kas suteikia „Java“ „rašyk vieną kartą ir paleiskite bet kur“ prigimtį?
Baito kodas. Java kompiliatorius konvertuoja Java programas į klasės failą (baitų kodą), kuris yra tarpinė kalba tarp šaltinio kodo ir mašinos kodo. Šis baito kodas nėra specifinis platforma ir gali būti vykdomas bet kuriame kompiuteryje.
11) Kas yra „classloader“?
Classloader yra JVM posistemis, naudojamas klasių failams įkelti. Kai paleidžiame „Java“ programą, pirmiausia ją įkelia klasės įkėlimo programa. „Java“ yra trys integruotos klasės įkėlimo programos.
12) Ar tuščias .java failo pavadinimas yra tinkamas šaltinio failo pavadinimas?
Taip, „Java“ leidžia išsaugoti mūsų „Java“ failą .java tik turime jį kompiliuoti pagal javac .java ir bėga pro šalį java klasės pavadinimas Paimkime paprastą pavyzdį:
//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
sukompiliuoti pagal javac .java
paleisti jį java A
13) Ar java raktažodis delete, next, main, exit arba null?
Nr.
14) Jei komandinėje eilutėje nepateiksiu jokių argumentų, kokia vertė, saugoma String masyve, bus perduota į main() metodą, tuščia ar NULL?
Jis tuščias, bet ne tuščias.
15) Ką daryti, jei vietoj viešosios statinės tuštumos parašysiu static public void?
Programa kompiliuojama ir veikia teisingai, nes Java specifikacijų tvarka neturi reikšmės.
16) Kokia yra numatytoji vietinių kintamųjų reikšmė?
Vietiniai kintamieji nėra inicijuojami į jokią numatytąją reikšmę, nei primityvus, nei objektų nuorodas.
17) Kokios yra įvairios „Java“ prieigos specifikacijos?
Java prieigos specifikatoriai yra raktiniai žodžiai, naudojami apibrėžiant metodo, klasės ar kintamojo prieigos apimtį. „Java“ yra keturios prieigos specifikacijos, pateiktos žemiau.
18) Kokia yra statinių metodų ir kintamųjų paskirtis?
Metodai arba kintamieji, apibrėžti kaip statiniai, yra bendrinami tarp visų klasės objektų. Statika yra klasės, o ne objekto dalis. Statiniai kintamieji saugomi klasės srityje ir mums nereikia kurti objekto, kad galėtume pasiekti tokius kintamuosius. Todėl statinis naudojamas tuo atveju, kai reikia apibrėžti kintamuosius ar metodus, kurie yra bendri visiems klasės objektams.
Pavyzdžiui, klasėje, kurioje imituojamas kolegijos studentų rinkimas, kolegijos pavadinimas yra bendras visų studentų atributas. Todėl kolegijos pavadinimas bus apibrėžtas kaip statinis .
19) Kokie yra „Java“ paketų pranašumai?
Yra įvairių „Java“ paketų apibrėžimo pranašumų.
- Paketuose išvengiama pavadinimų susidūrimų.
- Paketas suteikia lengvesnę prieigos kontrolę.
- Taip pat galime turėti paslėptas klases, kurios nematomos lauke ir naudojamos pakuotėje.
- Lengviau rasti susijusias klases.
20) Kokia yra šios „Java“ programos išvestis?
class Test { public static void main (String args[]) { System.out.println(10 + 20 + 'Javatpoint'); System.out.println('Javatpoint' + 10 + 20); } }
Aukščiau pateikto kodo išvestis bus
30Javatpoint Javatpoint1020
Paaiškinimas
Pirmuoju atveju 10 ir 20 laikomi skaičiais ir pridedami prie 30. Dabar jų suma 30 laikoma eilute ir sujungiama su eilute. Javapoint . Todėl produkcija bus 30 „Javatpoint“. .
Antruoju atveju eilutė Javatpoint sujungiama su 10, kad būtų nurodyta eilutė Javapoint10 kuris tada bus sujungtas su 20, kad būtų Javapoint1020 .
21) Kokia yra šios „Java“ programos išvestis?
class Test { public static void main (String args[]) { System.out.println(10 * 20 + 'Javatpoint'); System.out.println('Javatpoint' + 10 * 20); } }
Aukščiau pateikto kodo išvestis bus
200Javatpoint Javatpoint200
Paaiškinimas
Pirmuoju atveju pirmiausia bus padauginami skaičiai 10 ir 20, o tada rezultatas 200 laikomas eilute ir sujungiamas su eilute. Javapoint gaminti produkciją 200 Javapoint .
Antruoju atveju skaičiai 10 ir 20 pirmiausia bus padauginti iki 200, nes daugybos pirmenybė yra didesnė nei sudėjimo. Rezultatas 200 bus traktuojamas kaip eilutė ir sujungtas su eilute Javapoint gaminti produkciją kaip Javapoint200 .
22) Kokia yra šios „Java“ programos išvestis?
class Test { public static void main (String args[]) { for(int i=0; 0; i++) { System.out.println('Hello Javatpoint'); } } }
Aukščiau pateiktas kodas pateiks kompiliavimo laiko klaidą, nes for ciklas antroje dalyje reikalauja loginės reikšmės, o mes pateikiame sveikojo skaičiaus reikšmę, ty 0.
Pagrindinės „Java“ – OOP sąvokos: pradiniai OOP interviu klausimai
Pateikiama daugiau nei 50 OOP (objektinio programavimo ir sistemos) interviu klausimų. Tačiau jie buvo suskirstyti į daugelį skyrių, pavyzdžiui, konstruktoriaus interviu klausimai, statiniai interviu klausimai, paveldėjimo interviu klausimai, abstrakcijos interviu klausimai, polimorfizmo interviu klausimai ir kt.
23) Kas yra į objektą orientuota paradigma?
Tai programavimo paradigma, pagrįsta objektais, turinčiais duomenis ir metodus, apibrėžtus klasėje, kuriai ji priklauso. Į objektą orientuotos paradigmos tikslas – įtraukti moduliškumo ir pakartotinio naudojimo pranašumus. Objektai yra klasių atvejai, kurie sąveikauja tarpusavyje kurdami programas ir programas. Yra šios objektinės paradigmos ypatybės.
- Kuriant programas laikomasi metodo „iš apačios į viršų“.
- Sutelkite dėmesį į duomenis naudodami metodus, kaip valdyti objekto duomenis
- Apima tokias sąvokas kaip inkapsuliacija ir abstrakcija, kuri slepia sudėtingumą nuo vartotojo ir parodo tik funkcionalumą.
- Įgyvendina realaus laiko metodą, pvz., paveldėjimą, abstrakciją ir kt.
- Objektinės paradigmos pavyzdžiai yra C++, Simula, Smalltalk, Python, C# ir kt.
24) Kas yra objektas?
Objektas yra realaus laiko subjektas, turintis tam tikrą būseną ir elgesį. Java, objektas yra klasės egzempliorius, kurio egzempliorių kintamieji yra objekto būsena, o metodai - kaip objekto elgsena. Klasės objektą galima sukurti naudojant naujas raktažodį.
25) Kuo skiriasi objektinio programavimo kalba nuo objektinio programavimo kalbos?
Yra šie pagrindiniai skirtumai tarp objektinės kalbos ir objektinės kalbos.
- Objektinės kalbos laikosi visų OOP sąvokų, o objektu pagrįsta kalba nesilaiko visų OOP sąvokų, tokių kaip paveldėjimas ir polimorfizmas.
- Į objektus orientuotose kalbose nėra integruotų objektų, o objektų kalbose yra integruotų objektų, pavyzdžiui, JavaScript turi lango objektą.
- Objektinio programavimo pavyzdžiai yra „Java“, „C#“, „Smalltalk“ ir kt., o objektų kalbų pavyzdžiai yra „JavaScript“, „VBScript“ ir kt.
26) Kokia bus pradinė objekto nuorodos reikšmė, kuri apibrėžiama kaip egzemplioriaus kintamasis?
Visos objektų nuorodos „Java“ inicijuojamos į nulį.
Pagrindinės „Java“ – OOP sąvokos: konstruktoriaus interviu klausimai
27) Kas yra konstruktorius?
Konstruktorius gali būti apibrėžtas kaip specialus metodo tipas, naudojamas objekto būsenai inicijuoti. Jis iškviečiamas, kai sukuriama klasė ir objektui skiriama atmintis. Kiekvieną kartą objektas sukuriamas naudojant naujas raktažodį, iškviečiamas numatytasis klasės konstruktorius. Konstruktoriaus pavadinimas turi būti panašus į klasės pavadinimą. Konstruktorius neturi turėti aiškaus grąžinimo tipo.
Daugiau informacijos.28) Kiek tipų konstruktorių naudojama Java?
Remiantis konstruktorių perduodamais parametrais, „Java“ yra dviejų tipų konstruktoriai.
29) Koks yra numatytojo konstruktoriaus tikslas?
Numatytosios konstruktoriaus paskirtis – objektams priskirti numatytąją reikšmę. „Java“ kompiliatorius netiesiogiai sukuria numatytąjį konstruktorių, jei klasėje nėra konstruktoriaus.
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(); } }Išbandykite dabar
Išvestis:
0 null 0 null
Paaiškinimas: Aukščiau pateiktoje klasėje jūs nekuriate jokio konstruktoriaus, todėl kompiliatorius pateikia numatytąjį konstruktorių. Čia 0 ir nulinės reikšmės pateikiamos numatytojo konstruktoriaus.
Daugiau informacijos.
30) Ar konstruktorius grąžina kokią nors reikšmę?
Metai: taip, konstruktorius netiesiogiai grąžina dabartinį klasės egzempliorių (su konstruktoriumi negalite naudoti aiškaus grąžinimo tipo). Daugiau informacijos.
31)Ar konstruktorius paveldimas?
Ne, konstruktorius nėra paveldimas.
32) Ar galite padaryti konstruktorių galutinį?
Ne, konstruktorius negali būti galutinis.
java isempty
33) Ar galime perkrauti konstruktorius?
Taip, konstruktorius galima perkrauti keičiant konstruktoriaus priimtų argumentų skaičių arba keičiant parametrų duomenų tipą. Apsvarstykite toliau pateiktą pavyzdį.
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); } }
Aukščiau pateiktoje programoje konstruktoriaus testas yra perkrautas kitu konstruktoriumi. Pirmajame konstruktoriaus iškvietime iškviečiamas konstruktorius su vienu argumentu, o i bus inicijuotas reikšme 10. Tačiau antrajame konstruktoriaus iškvietime iškviečiamas konstruktorius su 2 argumentais ir i bus inicijuotas. su 15 reikšme.
34) Ką jūs suprantate kaip „Java“ kopijavimo konstruktorius?
„Java“ nėra kopijavimo konstruktoriaus. Tačiau mes galime nukopijuoti reikšmes iš vieno objekto į kitą, pavyzdžiui, kopijuoti konstruktorių C++.
Yra daug būdų, kaip nukopijuoti vieno objekto reikšmes į kitą „Java“. Jie yra:
- Pagal konstruktorių
- Priskirdami vieno objekto reikšmes kitam
- Objektų klasės metodu „clone()“.
Šiame pavyzdyje mes nukopijuosime vieno objekto reikšmes į kitą naudodami java konstruktorių.
//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(); } }Išbandykite dabar
Išvestis:
111 Karan 111 Karan
35) Kuo skiriasi konstruktoriai ir metodai?
Yra daug skirtumų tarp konstruktorių ir metodų. Jie pateikiami žemiau.
Java konstruktorius | Java metodas |
---|---|
Konstruktorius naudojamas objekto būsenai inicijuoti. | Objekto elgsenai atskleisti naudojamas metodas. |
Konstruktorius neturi turėti grąžinimo tipo. | Metodas turi turėti grąžinimo tipą. |
Konstruktorius iškviečiamas netiesiogiai. | Metodas yra aiškiai nurodytas. |
„Java“ kompiliatorius pateikia numatytąjį konstruktorių, jei klasėje neturite konstruktoriaus. | Metodo jokiu būdu nepateikia kompiliatorius. |
Konstruktoriaus pavadinimas turi būti toks pat kaip klasės pavadinimas. | Metodo pavadinimas gali būti toks pat kaip klasės pavadinimas arba ne. |
36) Kokia yra šios „Java“ programos išvestis?
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); } }
Šios programos išvestis yra tokia:
a = 10 b = 15
Čia kintamųjų a ir b duomenų tipas, ty baitas, perkeliamas į int, ir iškviečiamas pirmasis parametrizuotas konstruktorius su dviem sveikųjų skaičių parametrais.
37) Kokia yra šios „Java“ programos išvestis?
class Test { int i; } public class Main { public static void main (String args[]) { Test test = new Test(); System.out.println(test.i); } }
Programos išvestis yra 0, nes kintamasis i viduje inicijuojamas į 0. Kaip žinome, kad numatytasis konstruktorius iškviečiamas netiesiogiai, jei klasėje nėra konstruktoriaus, kintamasis i inicijuojamas į 0, nes klasėje nėra konstruktoriaus.
38) Kokia yra šios „Java“ programos išvestis?
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); } }
Čia yra kompiliatoriaus klaida programoje, nes pagrindiniame metode yra iškvietimas į numatytąjį konstruktorių, kurio klasėje nėra. Tačiau klasėje Test yra tik vienas parametrizuotas konstruktorius. Todėl konstruktorius netiesiogiai neiškviečia jokio numatytojo konstruktoriaus.
Pagrindinė „Java“ – OOP sąvokos: statiniai raktažodžiai Interviu klausimai
39) Kas yra statinis kintamasis?
Statinis kintamasis naudojamas nurodant bendrą visų objektų nuosavybę (kuri nėra unikali kiekvienam objektui), pvz., darbuotojų įmonės pavadinimas, studentų kolegijos pavadinimas ir kt. Statinis kintamasis įgyja atmintį tik vieną kartą klasės srityje klasės pakrovimo laikas. Naudojant statinį kintamąjį, programa tampa efektyvesnė (taupo atmintį). Statinis kintamasis priklauso klasei, o ne objektui.
//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(); } }Išbandykite dabar
Output:111 Karan ITS 222 Aryan ITS
Daugiau informacijos.
40) Kas yra statinis metodas?
- Statinis metodas priklauso klasei, o ne objektui.
- Norint iškviesti statinius metodus, objekto kurti nereikia.
- Statinis metodas gali pasiekti ir pakeisti statinio kintamojo reikšmę.
41) Kokie yra apribojimai, taikomi Java statiniams metodams?
Statiniams metodams taikomi du pagrindiniai apribojimai.
- Statinis metodas negali naudoti nestatinių duomenų nario arba tiesiogiai iškviesti nestatinį metodą.
- tai ir super negalima naudoti statiniame kontekste, nes jie yra nestatiniai.
42) Kodėl pagrindinis metodas yra statinis?
Kadangi objektas neprivalo iškviesti statinio metodo. Jei pagrindinį metodą padarysime nestatinį, JVM pirmiausia turės sukurti savo objektą ir tada iškviesti main() metodą, dėl kurio bus paskirstyta papildoma atmintis. Daugiau informacijos.
43) Ar galime nepaisyti statinių metodų?
Ne, mes negalime nepaisyti statinių metodų.
44) Kas yra statinis blokas?
Statinis blokas naudojamas statinių duomenų elementui inicijuoti. Jis vykdomas prieš pagrindinį metodą, klasės įkėlimo metu.
class A2{ static{System.out.println('static block is invoked');} public static void main(String args[]){ System.out.println('Hello main'); } }Išbandykite dabar
Output: static block is invoked Hello main
Daugiau informacijos.
45) Ar galime vykdyti programą be main() metodo?
Atsakymas) Ne, tai buvo įmanoma prieš JDK 1.7 naudojant statinį bloką. Kadangi JDK 1.7, tai neįmanoma. Daugiau informacijos.
46) Ką daryti, jei statinis modifikatorius pašalinamas iš pagrindinio metodo parašo?
Programa kompiliuoja. Tačiau vykdymo metu ji pateikia klaidą „NoSuchMethodError“.
47) Kuo skiriasi statinis (klasės) metodas ir egzemplioriaus metodas?
statinis arba klasės metodas | atvejo metodas |
---|---|
1) Metodas, kuris deklaruojamas kaip statinis, yra žinomas kaip statinis metodas. | Metodas, kuris nėra paskelbtas kaip statinis, yra žinomas kaip egzemplioriaus metodas. |
2) Mums nereikia kurti objektų, kad galėtume iškviesti statinius metodus. | Objektas turi iškviesti egzemplioriaus metodus. |
3) Nestatiniai (pavyzdžiui) nariai negali būti tiesiogiai pasiekiami statiniame kontekste (statinis metodas, statinis blokas ir statinė įdėta klasė). | Statinius ir nestatinius kintamuosius galima pasiekti egzempliorių metodais. |
4) Pavyzdžiui: viešas statinis int kubas(int n){ return n*n*n;} | Pavyzdžiui: public void msg(){...}. |
48) Ar galime konstruktorius padaryti statiškus?
Kaip žinome, statinis kontekstas (metodas, blokas arba kintamasis) priklauso klasei, o ne objektui. Kadangi konstruktoriai iškviečiami tik tada, kai sukuriamas objektas, nėra prasmės konstruktorių laikyti statiniais. Tačiau jei bandysite tai padaryti, kompiliatorius parodys kompiliatoriaus klaidą.
49) Ar galime padaryti abstrakčius metodus statinius Java?
Jei „Java“ abstrakčius metodus padarysime statinius, tai taps klasės dalimi ir mes galime ją tiesiogiai vadinti, o tai nereikalinga. Iškviesti neapibrėžtą metodą yra visiškai nenaudinga, todėl tai neleidžiama.
50) Ar galime deklaruoti statinius kintamuosius ir metodus abstrakčioje klasėje?
Taip, statinius kintamuosius ir metodus galime deklaruoti abstrakčiu metodu. Kadangi žinome, kad nėra reikalavimo, kad objektas pasiektų statinį kontekstą, todėl galime pasiekti statinį kontekstą, deklaruotą abstrakčios klasės viduje, naudodami abstrakčios klasės pavadinimą. Apsvarstykite toliau pateiktą pavyzdį.
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); } }
Išvestis
hi !! I am good !! i = 102
Pagrindinės „Java“ – OOP sąvokos: paveldėjimo interviu klausimai
51) Kas yra tai raktinis žodis java?
The tai raktinis žodis yra nuorodos kintamasis, nurodantis dabartinį objektą. Šis raktinis žodis „Java“ naudojamas įvairiai. Jis gali būti naudojamas nurodant dabartinės klasės ypatybes, tokias kaip egzempliorių metodai, kintamasis, konstruktoriai ir kt. Jis taip pat gali būti perduodamas kaip argumentas metodams ar konstruktoriams. Jis taip pat gali būti grąžintas iš metodo kaip dabartinis klasės egzempliorius.
Daugiau informacijos.
52) Kokie yra pagrindiniai šio raktinio žodžio naudojimo būdai?
Yra šie naudojimo būdai tai raktažodį.
53) Ar galime priskirti nuorodą tai kintamasis?
Ne, tai negali būti priskirta jokiai reikšmei, nes ji visada nurodo dabartinės klasės objektą ir tai yra paskutinė Java nuoroda. Tačiau jei bandysime tai padaryti, bus rodoma kompiliatoriaus klaida. Apsvarstykite toliau pateiktą pavyzdį.
public class Test { public Test() { this = null; System.out.println('Test class constructor called'); } public static void main (String args[]) { Test t = new Test(); } }
Išvestis
Test.java:5: error: cannot assign a value to final variable this this = null; ^ 1 error
54) Kan tai raktinis žodis bus naudojamas statiniams nariams nurodyti?
Taip, šį raktinį žodį galima naudoti norint nurodyti statinius narius, nes tai tik nuorodos kintamasis, nurodantis esamą klasės objektą. Tačiau, kaip žinome, nebūtina prieiti prie statinių kintamųjų per objektus, todėl tai nėra geriausia praktika naudoti statiniams nariams nurodyti. Apsvarstykite toliau pateiktą pavyzdį.
public class Test { static int i = 10; public Test () { System.out.println(this.i); } public static void main (String args[]) { Test t = new Test(); } }
Išvestis
10
55) Kaip naudojant šį raktinį žodį galima sujungti konstruktorių?
Konstruktorių grandinė leidžia iškviesti vieną konstruktorių iš kito klasės konstruktoriaus esamo klasės objekto atžvilgiu. Šį raktinį žodį galime naudoti konstruktorių grandinimui atlikti toje pačioje klasėje. Apsvarstykite toliau pateiktą pavyzdį, iliustruojantį, kaip galime naudoti šį raktinį žodį konstruktoriaus grandinės sujungimui.
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); } }
Išvestis
ID: 105 Name:Vikas age:22 address: Delhi
56) Kokie yra privalumai, kai tai perkeliama į metodą, o ne į patį dabartinės klasės objektą?
Kaip žinome, tai reiškia dabartinės klasės objektą, todėl jis turi būti panašus į dabartinės klasės objektą. Tačiau gali būti du pagrindiniai privalumai, kai tai perkeliama į metodą, o ne į dabartinį klasės objektą.
- tai yra galutinis kintamasis. Todėl to negalima priskirti jokiai naujai vertei, o dabartinės klasės objektas gali būti negalutinis ir gali būti pakeistas.
- tai galima naudoti sinchronizuotame bloke.
57) Kas yra paveldėjimas?
Paveldėjimas – tai mechanizmas, kai vienas objektas įgyja visas kito kitos klasės objekto savybes ir elgesį. Jis naudojamas kodo pakartotiniam naudojimui ir metodo nepaisymui. „Java“ paveldėjimo idėja yra ta, kad galite sukurti naujas klases, pagrįstas esamomis klasėmis. Kai paveldėsite iš esamos klasės, galite pakartotinai naudoti pagrindinės klasės metodus ir laukus. Be to, dabartinėje klasėje galite pridėti naujų metodų ir laukų. Paveldėjimas reiškia IS-A ryšį, kuris taip pat žinomas kaip tėvų ir vaikų santykiai.
Java yra penki paveldėjimo tipai.
- Vieno lygio paveldėjimas
- Daugiapakopis paveldėjimas
- Daugybinis paveldėjimas
- Hierarchinis paveldėjimas
- Hibridinis paveldėjimas
„Java“ nepalaiko kelių paveldėjimo per klasę.
Daugiau informacijos.58) Kodėl „Java“ naudojamas paveldėjimas?
Toliau pateikiami įvairūs paveldėjimo pranašumai Java.
- Paveldėjimas suteikia kodo pakartotinio naudojimo. Išvestinei klasei nereikia iš naujo apibrėžti pagrindinės klasės metodo, nebent jai reikia pateikti konkretų metodo įgyvendinimą.
- Vykdymo laiko polimorfizmas negali būti pasiektas nenaudojant paveldėjimo.
- Mes galime imituoti klasių paveldėjimą su realaus laiko objektais, todėl OOP tampa tikroviškesni.
- Paveldėjimas suteikia duomenų slėpimą. Bazinė klasė gali paslėpti kai kuriuos duomenis iš išvestinės klasės, padarydama ją privačia.
- Metodo nepaisymas negali būti pasiektas be paveldėjimo. Nepaisydami metodo, galime pateikti konkretų pagrindinio metodo, esančio bazinėje klasėje, įgyvendinimą.
59) Kuri klasė yra visų klasių superklasė?
Objekto klasė yra visų kitų „Java“ klasių superklasė.
60) Kodėl java nepalaikomas daugialypis paveldėjimas?
Siekiant sumažinti sudėtingumą ir supaprastinti kalbą, java nepalaikomas daugialypis paveldėjimas. Apsvarstykite scenarijų, kai A, B ir C yra trys klasės. C klasė paveldi A ir B klases. Jei A ir B klasėse yra tas pats metodas ir jūs jį iškviečiate iš antrinės klasės objekto, bus neaišku, kaip iškviesti A arba B klasės metodą.
Kadangi kompiliavimo laiko klaidos yra geresnės nei vykdymo klaidos, „Java“ pateikia kompiliavimo laiko klaidą, jei paveldėsite 2 klases. Taigi, nesvarbu, ar naudojate tą patį metodą, ar kitokį, bus kompiliavimo laiko klaida.
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? } }Išbandykite dabar
Compile Time Error
61) Kas yra agregavimas?
Agregaciją galima apibrėžti kaip ryšį tarp dviejų klasių, kai suvestinėje klasėje yra nuoroda į jai priklausančią klasę. Sujungimas geriausiai apibūdinamas kaip a turi santykiai. Pavyzdžiui, suvestinėje klasėje Darbuotojas, turintis įvairius laukus, tokius kaip amžius, vardas ir atlyginimas, taip pat yra adreso klasės objektas, turintis įvairius laukus, pvz., 1 adreso eilutė, miestas, valstija ir PIN kodas. Kitaip tariant, galime pasakyti, kad darbuotojas (klasė) turi Adreso klasės objektą. Apsvarstykite toliau pateiktą pavyzdį.
Adresas.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; } }
Darbuotojas.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(); } }
Išvestis
111 varun gzb UP india 112 arun gno UP india
62) Kas yra kompozicija?
Klasės nuorodos laikymas kitoje klasėje yra žinomas kaip kompozicija. Kai objekte yra kitas objektas, jei esantis objektas negali egzistuoti be konteinerio objekto, tada jis vadinamas kompozicija. Kitaip tariant, galime sakyti, kad kompozicija yra ypatingas agregacijos atvejis, atspindintis stipresnį ryšį tarp dviejų objektų. Pavyzdys: klasėje yra mokinių. Mokinys negali egzistuoti be klasės. Tarp klasės ir mokinių egzistuoja kompozicija.
63) Kuo skiriasi agregavimas ir sudėtis?
Agregacija reiškia silpną ryšį, o kompozicija – tvirtą ryšį. Pavyzdžiui, dviratis turi indikatorių (agregaciją), tačiau dviratis turi variklį (sudėtis).
64) Kodėl Java nepalaiko rodyklių?
Rodyklė yra kintamasis, nurodantis atminties adresą. Jie nenaudojami Java, nes yra nesaugūs (neapsaugoti) ir sudėtingi suprasti.
65) Kas yra super Java?
The super „Java“ raktinis žodis yra nuorodos kintamasis, naudojamas nurodyti tiesioginį pirminės klasės objektą. Kai kuriate poklasio egzempliorių, netiesiogiai sukuriamas pagrindinės klasės egzempliorius, kuris nurodomas superreferenciniu kintamuoju. Super() klasės konstruktoriuje netiesiogiai iškviečiamas kompiliatorius, jei nėra super arba šio.
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(); } }Išbandykite dabar
Išvestis:
animal is created dog is createdDaugiau informacijos.
66) Kaip konstruktoriaus grandinės sujungimas naudojant super raktinį žodį?
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); } }
Išvestis
Name: Mukesh Salary: 90000.0 Age: 22 Address: Delhi
67) Kokie yra pagrindiniai raktinio žodžio „super“ naudojimo būdai?
Yra šie super raktinio žodžio naudojimo būdai.
- super gali būti naudojamas nurodant tiesioginį pirminės klasės egzemplioriaus kintamąjį.
- super gali būti naudojamas tiesioginiam pirminės klasės metodui iškviesti.
- super() gali būti naudojamas tiesioginiam pirminės klasės konstruktoriui iškviesti.
68) Kuo šis raktinis žodis skiriasi nuo super raktinio žodžio?
Yra šie skirtumai tarp šio ir super raktinio žodžio.
- Super raktinis žodis visada nurodo pirminės klasės kontekstus, o šis raktinis žodis visada nurodo dabartinės klasės kontekstą.
- Super raktinis žodis pirmiausia naudojamas inicijuojant bazinės klasės kintamuosius išvestiniame klasės konstruktoriuje, tuo tarpu šis raktinis žodis pirmiausia naudojamas atskirti vietinius ir egzempliorių kintamuosius, kai perduodamas klasės konstruktoriuje.
- Super ir tai turi būti pirmasis konstruktoriaus sakinys, kitaip kompiliatorius išmes klaidą.
69) Kokia yra šios „Java“ programos išvestis?
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(); } }
Išvestis
Person class constructor called Employee class constructor called
Paaiškinimas
Kompiliatorius netiesiogiai iškviečia super(), jei joks super() arba this() nėra tiesiogiai įtrauktas į išvestinį klasės konstruktorių. Todėl šiuo atveju pirmiausia iškviečiamas Asmens klasės konstruktorius, o tada – Darbuotojų klasės konstruktorius.
70) Ar galite naudoti šį () ir super () abu konstruktoriuje?
Ne, nes this() ir super() turi būti pirmasis sakinys klasės konstruktoriuje.
Pavyzdys:
public class Test{ Test() { super(); this(); System.out.println('Test class object is created'); } public static void main(String []args){ Test t = new Test(); } }
Išvestis:
Test.java:5: error: call to this must be first statement in constructor
71) Kas yra objektų klonavimas?
Objekto klonavimas naudojamas norint sukurti tikslią objekto kopiją. Objekto klasės metodas clone() naudojamas objektui klonuoti. The java.lang.Klonuojamas sąsają turi įgyvendinti klasė, kurios objekto kloną norime sukurti. Jei neįdiegsime Cloneable sąsajos, metodas clone() generuoja CloneNotSupportedException.
protected Object clone() throws CloneNotSupportedExceptionDaugiau informacijos.
Pagrindinės „Java“ – OOP sąvokos: Metodo perkrovos interviu klausimai
72) Kas yra metodo perkrovimas?
Metodo perkrovimas yra polimorfizmo metodas, leidžiantis sukurti kelis metodus tuo pačiu pavadinimu, bet skirtingu parašu. Metodo perkrovą galime pasiekti dviem būdais.
- Keičiant argumentų skaičių
- Keičiant argumentų duomenų tipą
Metodo perkrovimas padidina programos skaitomumą. Metodo perkrovimas atliekamas norint greitai išsiaiškinti programą.
Daugiau informacijos.73) Kodėl metodo perkrovimas neįmanomas pakeitus grąžinimo tipą java?
„Java“ metodo perkrovimas neįmanomas pakeitus programos grąžinimo tipą, kad būtų išvengta dviprasmybių.
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 }}Išbandykite dabar
Išvestis:
Compile Time Error: method add(int, int) is already defined in class AdderDaugiau informacijos.
74) Ar galime perkrauti metodus, padarydami juos statiškus?
Ne, mes negalime perkrauti metodų, tiesiog pritaikę jiems statinį raktinį žodį (parametrų ir tipų skaičius yra vienodas). Apsvarstykite toliau pateiktą pavyzdį.
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); } }
Išvestis
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) Ar galime perkrauti main() metodą?
Taip, mes galime turėti bet kokį pagrindinių metodų skaičių Java programoje, naudodami metodų perkrovą.
Daugiau informacijos.76) Kas yra metodo perkrovimas naudojant tipo reklamą?
Tipo reklama yra metodo perkrovimas, tai reiškia, kad vienas duomenų tipas gali būti netiesiogiai perkeltas į kitą, jei nerandama tikslios atitikties.
Kaip parodyta aukščiau pateiktoje diagramoje, baitas gali būti paaukštintas į trumpą, int, ilgą, plūduriuojantį arba dvigubą. Trumpas duomenų tipas gali būti pakeistas į int, long, float arba double. char duomenų tipas gali būti pakeistas į int, long, float arba double ir pan. Apsvarstykite toliau pateiktą pavyzdį.
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); } }Išbandykite dabar
Išvestis
40 60
77) Kokia yra šios „Java“ programos išvestis?
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 } }
Išvestis
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
Paaiškinimas
Yra du metodai, apibrėžti tuo pačiu pavadinimu, ty suma. Pirmasis metodas priima sveikojo ir ilgojo tipo tipus, o antrasis metodas priima ilgąjį ir sveikąjį skaičių. Perduoti parametrai, kurie yra a = 20, b = 20. Negalime pasakyti, kuris metodas bus iškviestas, nes nėra aiškaus skirtumo tarp sveikojo ir ilgojo literalo. Tai yra dviprasmiškumo atvejis. Todėl kompiliatorius išmes klaidą.
Pagrindinės „Java“ – OOP sąvokos: Metodo nepaisymas interviu klausimai
78) Kas yra metodo nepaisymas:
Jei poklasis pateikia konkretų metodo įgyvendinimą, kurį jau teikia pirminė klasė, jis vadinamas metodo nepaisymu. Jis naudojamas vykdymo laiko polimorfizmui ir sąsajos metodams įgyvendinti.
Metodo viršenybės taisyklės
- Metodo pavadinimas turi būti toks pat kaip ir pirminėje klasėje.
- Metodas turi turėti tokį patį parašą kaip ir pirminėje klasėje.
- Dvi klasės turi turėti IS-A ryšį.
79) Ar galime nepaisyti statinio metodo?
Ne, jūs negalite nepaisyti statinio metodo, nes jie yra klasės dalis, o ne objektas.
80) Kodėl negalime nepaisyti statinio metodo?
Taip yra todėl, kad statinis metodas yra klasės dalis ir yra susietas su klase, o egzempliorių metodas yra susietas su objektu, o statinis atmintį gauna klasės srityje, o egzempliorius atmintį gauna krūvoje.
81) Ar galime nepaisyti perkrauto metodo?
Taip.
82) Perkrovos ir nepaisymo metodo skirtumas.
Metodas Perkrovimas | Metodo nepaisymas |
---|---|
1) Metodo perkrovimas padidina programos skaitomumą. | Metodo nepaisymas suteikia konkretų metodo įgyvendinimą, kurį jau teikia jo superklasė. |
2) Klasėje atsiranda metodų perkrova. | Metodo nepaisymas vyksta dviejose klasėse, kurios turi IS-A ryšį. |
3) Šiuo atveju parametrai turi būti skirtingi. | Tokiu atveju parametrai turi būti vienodi. |
83) Ar galime nepaisyti privačių metodų?
Ne, mes negalime nepaisyti privačių metodų, nes privačių metodų taikymo sritis yra apribota klase ir negalime jų pasiekti už klasės ribų.
84) Ar galime pakeisti nepaisyto metodo apimtį poklasyje?
Taip, galime pakeisti nepaisyto metodo apimtį poklasyje. Tačiau turime pastebėti, kad negalime sumažinti metodo prieinamumo. Keičiant metodo prieinamumą reikia atsižvelgti į šį punktą.
- Privatus gali būti pakeistas į apsaugotą, viešą arba numatytąjį.
- Apsaugotą galima pakeisti į viešą arba numatytąjį.
- Numatytąjį nustatymą galima pakeisti į viešą.
- Visuomenė visada išliks vieša.
85) Ar galime modifikuoti superklasės metodo metimų sąlygą, nepaisydami jos poklasyje?
Taip, mes galime modifikuoti superclass metodo metimų sąlygą, nepaisydami jos poklasyje. Tačiau yra tam tikrų taisyklių, kurių reikia laikytis, o išimtis tvarkant jų nepaisoma.
- Jei superklasės metodas nedeklaruoja išimties, poklasio nepaisytas metodas negali deklaruoti patikrintos išimties, bet gali paskelbti nepažymėtą išimtį.
- Jei superklasės metodas deklaruoja išimtį, poklasio nepaisytas metodas gali paskelbti tą patį, poklasio išimtį arba be išimties, bet negali paskelbti pirminės išimties.
86) Kokia yra šios „Java“ programos išvestis?
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); } }
Išvestis
Base class method called with integer a = 10
Paaiškinimas
Metodas () yra perkrautas klasėje Base, o jis yra išvestas klasėje Išvestinė, kai parametras yra dvigubas tipas. Metodo iškvietime perduodamas sveikasis skaičius.
87) Ar galite turėti virtualias funkcijas Java?
Taip, visos Java funkcijos pagal numatytuosius nustatymus yra virtualios.
88) Kas yra kovarianto grąžos tipas?
Dabar, nuo java5, galima nepaisyti bet kurio metodo keičiant grąžinimo tipą, jei poklasio nepaisymo metodo grąžinimo tipas yra poklasio tipas. Jis žinomas kaip kovariantinis grąžinimo tipas. Kovarianto grąžinimo tipas nurodo, kad grąžinimo tipas gali skirtis ta pačia kryptimi kaip ir poklasis.
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(); } }Išbandykite dabar
Output: welcome to covariant return typeDaugiau informacijos.
89) Kokia yra šios „Java“ programos išvestis?
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(); } }
Išvestis
Derived method called ...
Paaiškinimas
Bazinės klasės metodas, ty baseMethod() yra nepaisomas klasėje Išvestinė. Bandymo klasėje atskaitos kintamasis b (tipo Bazinė klasė) nurodo išvestinės klasės egzempliorių. Čia pasiekiamas vykdymo laiko polimorfizmas tarp klasės bazės ir išvestinės. Kompiliavimo metu metodo baseMethod buvimas patikrintas Base klasėje, jei jis yra, tada programa sukompiliuota, kitaip bus rodoma kompiliatoriaus klaida. Šiuo atveju baseMethod yra Base klasėje; todėl jis sėkmingai kompiliuojamas. Tačiau vykdymo metu jis patikrina, ar bazinio metodo nepaisė išvestinė klasė. Jei taip, tada išvestinės klasės metodas vadinamas kitaip. Šiuo atveju Išvestinė klasė nepaiso baseMethod; todėl vadinamas Išvestinės klasės metodas.
Pagrindinė „Java“ – OOP sąvokos: galutiniai raktinio žodžio interviu klausimai
90) Koks yra galutinis kintamasis?
„Java“ programoje galutinis kintamasis naudojamas apriboti vartotoją nuo jo atnaujinimo. Jei inicijuojame galutinį kintamąjį, jo reikšmės pakeisti negalime. Kitaip tariant, galime pasakyti, kad galutinis kintamasis, priskiriamas reikšmei, po to niekada negali būti pakeistas. Galutinį kintamąjį, kuris nėra priskirtas jokiai reikšmei, galima priskirti tik per klasės konstruktorių.
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 classIšbandykite dabar
Output:Compile Time ErrorDaugiau informacijos.
91) Koks yra galutinis metodas?
Jei pakeisime bet kurį metodą į galutinį metodą, negalėsime jo nepaisyti. Daugiau informacijos.
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(); } }Išbandykite dabar
Output:Compile Time Error
92) Kokia yra paskutinė klasė?
Jei kurią nors klasę padarysime galutine, negalėsime jos paveldėti jokiam poklasiui.
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(); } }Išbandykite dabar
Output:Compile Time ErrorDaugiau informacijos.
93) Koks yra galutinis tuščias kintamasis?
Galutinis kintamasis, kuris nebuvo inicijuotas deklaravimo metu, yra žinomas kaip galutinis tuščias kintamasis. Negalime tiesiogiai inicijuoti galutinio tuščio kintamojo. Vietoj to turime jį inicijuoti naudodami klasės konstruktorių. Tai naudinga tuo atveju, kai vartotojas turi tam tikrų duomenų, kurių kiti neturi keisti, pavyzdžiui, PAN numeris. Apsvarstykite šį pavyzdį:
class Student{ int id; String name; final String PAN_CARD_NUMBER; ... }Daugiau informacijos.
94) Ar galime inicijuoti galutinį tuščią kintamąjį?
Taip, jei jis nėra statinis, galime jį inicijuoti konstruktoriuje. Jei tai statinis tuščias galutinis kintamasis, jį galima inicijuoti tik statiniame bloke. Daugiau informacijos.
95) Ar galite paskelbti pagrindinį metodą galutiniu?
Taip, pagrindinį metodą galime paskelbti viešu statiniu galutiniu void main(String[] args){}.
96) Kokia yra šios „Java“ programos išvestis?
class Main { public static void main(String args[]){ final int i; i = 20; System.out.println(i); } }
Išvestis
20
Paaiškinimas
Kadangi i yra tuščias galutinis kintamasis. Jį galima inicijuoti tik vieną kartą. Mes jį inicijavome iki 20. Todėl bus atspausdinta 20.
97) Kokia yra šios „Java“ programos išvestis?
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(); } }
Išvestis
Derived.java:11: error: getInfo() in Derived cannot override getInfo() in Base protected final void getInfo() ^ overridden method is final 1 error
Paaiškinimas
GetDetails() metodas yra galutinis; todėl jo negalima nepaisyti poklasyje.
98) Ar galime paskelbti konstruktorių galutiniu?
Konstruktorius niekada negali būti paskelbtas galutiniu, nes jis niekada nėra paveldimas. Konstruktoriai nėra įprasti metodai; todėl nėra prasmės konstruktorių skelbti galutiniais. Tačiau jei bandysite tai padaryti, kompiliatorius išmes klaidą.
99) Ar galime paskelbti sąsają galutine?
Ne, negalime paskelbti sąsajos galutine, nes sąsają turi įdiegti kuri nors klasė, kad būtų pateiktas jos apibrėžimas. Todėl nėra prasmės sąsają padaryti galutine. Tačiau jei bandysite tai padaryti, kompiliatorius parodys klaidą.
100) Kuo skiriasi galutinis metodas nuo abstraktaus?
Pagrindinis skirtumas tarp galutinio metodo ir abstrakčiojo metodo yra tas, kad abstraktus metodas negali būti galutinis, nes turime juos nepaisyti poklasyje, kad pateiktume jo apibrėžimą.