logo

300 Kern-Java-Interviewfragen | Set 1

90-prozentige Sicherheit bei Interviewfragen

Es gibt eine Liste der 300 wichtigsten Java-Interviewfragen. Wenn Ihnen eine Kernfrage im Java-Interview gestellt wurde, posten Sie diese bitte im Abschnitt „Fragen stellen“. Wir versichern Ihnen, dass Sie hier die 90 % der am häufigsten gestellten Fragen und Antworten zu Vorstellungsgesprächen erhalten.

Die Antworten auf die Core Java-Interviewfragen sind kurz und prägnant. Die wichtigsten Java-Interviewfragen sind in die Kategorien „Grundlagen von Java-Interviewfragen“, „OOPs-Interviewfragen“, „String Handling“-Interviewfragen, Multithreading-Interviewfragen, Sammlungsinterviewfragen, JDBC-Interviewfragen usw. kategorisiert.


1 2 3 4 5

Core Java: Grundlagen von Java-Interviewfragen


1) Was ist Java?

Java ist das hohe Niveau, objektorientierte , robuste, sichere Programmiersprache, plattformunabhängige, leistungsstarke, multithreaded und portable Programmiersprache. Es wurde entwickelt von James Gosling im Juni 1991. Sie kann auch als Plattform bezeichnet werden, da sie ihre eigene JRE und API bereitstellt.


2) Was sind die Unterschiede zwischen C++ und Java?

Die Unterschiede zwischen C++ und Java sind in der folgenden Tabelle aufgeführt.

Vergleichsindex C++Java
Plattformunabhängig C++ ist plattformabhängig.Java ist plattformunabhängig.
Hauptsächlich verwendet für C++ wird hauptsächlich zur Systemprogrammierung verwendet.Java wird hauptsächlich zur Anwendungsprogrammierung verwendet. Es wird häufig in Fenster-, webbasierten, Unternehmens- und mobilen Anwendungen verwendet.
Designziel C++ wurde für die System- und Anwendungsprogrammierung entwickelt. Es war eine Erweiterung von C-Programmiersprache .Java wurde als Interpreter für Drucksysteme konzipiert und erstellt, später jedoch als Unterstützung für Netzwerk-Computing erweitert. Es wurde mit dem Ziel entwickelt, einfach zu bedienen und einem breiteren Publikum zugänglich zu sein.
Gehe zu C++ unterstützt die goto-Anweisung.Java unterstützt die goto-Anweisung nicht.
Mehrfachvererbung C++ unterstützt Mehrfachvererbung.Java unterstützt keine Mehrfachvererbung durch Klassen. Dies kann erreicht werden durch Schnittstellen in Java .
Überlastung des Bedieners C++ unterstützt Überlastung des Bedieners .Java unterstützt keine Operatorüberladung.
Hinweise C++ unterstützt Zeiger. Sie können Zeigerprogramme in C++ schreiben.Java unterstützt Zeiger intern. Sie können das Zeigerprogramm jedoch nicht in Java schreiben. Dies bedeutet, dass Java in Java eine eingeschränkte Zeigerunterstützung hat.
Compiler und Interpreter C++ verwendet nur den Compiler. C++ wird mit dem Compiler kompiliert und ausgeführt, der Quellcode in Maschinencode umwandelt, sodass C++ plattformabhängig ist.Java verwendet sowohl Compiler als auch Interpreter. Java-Quellcode wird zur Kompilierungszeit in Bytecode umgewandelt. Der Interpreter führt diesen Bytecode zur Laufzeit aus und erzeugt eine Ausgabe. Java wird so interpretiert, dass es plattformunabhängig ist.
Aufruf nach Wert und Aufruf nach Referenz C++ unterstützt sowohl Call-by-Value als auch Call-by-Reference.Java unterstützt nur Call-by-Value. In Java gibt es keinen Call-by-Reference.
Struktur und Union C++ unterstützt Strukturen und Unions.Java unterstützt keine Strukturen und Gewerkschaften.
Thread-Unterstützung C++ bietet keine integrierte Unterstützung für Threads. Für die Thread-Unterstützung ist es auf Bibliotheken von Drittanbietern angewiesen.Java ist integriert Faden Unterstützung.
Dokumentationskommentar C++ unterstützt keine Dokumentationskommentare.Java unterstützt Dokumentationskommentare (/** ... */), um Dokumentation für Java-Quellcode zu erstellen.
Virtuelles Schlüsselwort C++ unterstützt das virtuelle Schlüsselwort, sodass wir entscheiden können, ob eine Funktion überschrieben wird oder nicht.Java hat kein virtuelles Schlüsselwort. Wir können standardmäßig alle nicht statischen Methoden überschreiben. Mit anderen Worten: Nicht statische Methoden sind standardmäßig virtuell.
vorzeichenlose Rechtsverschiebung >>> C++ unterstützt den >>>-Operator nicht.Java unterstützt den vorzeichenlosen Rechtsverschiebungsoperator >>>, der bei negativen Zahlen oben eine Null auffüllt. Für positive Zahlen funktioniert es genauso wie der >>-Operator.
Vererbungsbaum C++ erstellt immer einen neuen Vererbungsbaum.Java verwendet immer einen einzelnen Vererbungsbaum, da alle Klassen die untergeordneten Klassen der Object-Klasse in Java sind. Die Objektklasse ist die Wurzel des Nachlass Baum in Java.
Hardware C++ ist näher an der Hardware.Java ist nicht so interaktiv mit Hardware.
Objektorientierte C++ ist eine objektorientierte Sprache. In der Sprache C ist jedoch eine einzelne Root-Hierarchie nicht möglich.Java ist auch ein objektorientierte Sprache. Allerdings ist in Java alles (außer Grundtypen) ein Objekt. Es handelt sich um eine einzelne Root-Hierarchie, da alles von java.lang.Object abgeleitet wird.

3) Listen Sie die Funktionen der Programmiersprache Java auf.

In der Programmiersprache Java gibt es die folgenden Funktionen.

    Einfach:Java ist leicht zu erlernen. Die Syntax von Java basiert auf C++, was das Schreiben des Programms darin erleichtert.
    Objektorientierte:Java folgt dem objektorientierten Paradigma, das es uns ermöglicht, unseren Code als Kombination verschiedener Objekttypen zu verwalten, die sowohl Daten als auch Verhalten beinhalten.
    Tragbar:Java unterstützt den Ansatz „Einmal lesen, überall schreiben“. Wir können das Java-Programm auf jeder Maschine ausführen. Das Java-Programm (.java) wird in Bytecode (.class) konvertiert, der problemlos auf jedem Computer ausgeführt werden kann.
    Plattformunabhängig:Java ist eine plattformunabhängige Programmiersprache. Es unterscheidet sich von anderen Programmiersprachen wie C und C++, die zur Ausführung eine Plattform benötigen. Java bringt seine Plattform mit, auf der sein Code ausgeführt wird. Java ist nicht vom auszuführenden Betriebssystem abhängig.
    Gesichert:Java ist sicher, da es keine expliziten Zeiger verwendet. Java bietet außerdem das Konzept der ByteCode- und Ausnahmebehandlung, was es sicherer macht.
    Robust:Java ist eine starke Programmiersprache, da sie eine starke Speicherverwaltung nutzt. Die Konzepte wie automatische Speicherbereinigung, Ausnahmebehandlung usw. machen es robuster.
    Architekturneutral:Java ist architekturneutral, da es nicht von der Architektur abhängig ist. In C kann die Größe der Datentypen je nach Architektur (32 Bit oder 64 Bit) variieren, was in Java nicht existiert.
    Interpretiert:Java verwendet für die Programmausführung neben dem Compiler den Just-in-Time-Interpreter (JIT).
    Hochleistung:Java ist schneller als andere traditionell interpretierte Programmiersprachen, da der Java-Bytecode dem nativen Code „nahe“ ist. Es ist immer noch etwas langsamer als eine kompilierte Sprache (z. B. C++).
    Multithreaded:Wir können Java-Programme schreiben, die viele Aufgaben gleichzeitig erledigen, indem wir mehrere Threads definieren. Der Hauptvorteil von Multithreading besteht darin, dass nicht für jeden Thread Speicher belegt wird. Es teilt sich einen gemeinsamen Speicherbereich. Threads sind wichtig für Multimedia, Webanwendungen usw.
    Verteilt:Java wird verteilt, weil es Benutzern die Erstellung verteilter Anwendungen in Java erleichtert. RMI und EJB werden zum Erstellen verteilter Anwendungen verwendet. Diese Funktion von Java ermöglicht es uns, auf Dateien zuzugreifen, indem wir die Methoden von jedem Computer im Internet aus aufrufen.
    Dynamisch:Java ist eine dynamische Sprache. Es unterstützt das dynamische Laden von Klassen. Das bedeutet, dass Klassen bei Bedarf geladen werden. Es unterstützt auch Funktionen aus seinen Muttersprachen, d. h. C und C++.

4) Was verstehen Sie unter Java Virtual Machine?

Java virtuelle Maschine ist eine virtuelle Maschine, die es dem Computer ermöglicht, das Java-Programm auszuführen. JVM verhält sich wie eine Laufzeit-Engine, die die im Java-Code vorhandene Hauptmethode aufruft. JVM ist die Spezifikation, die im Computersystem implementiert werden muss. Der Java-Code wird von JVM als Bytecode kompiliert, der maschinenunabhängig ist und dem nativen Code nahe kommt.


5) Was ist der Unterschied zwischen JDK, JRE und JVM?

JVM

JVM ist ein Akronym für Java Virtual Machine; Es handelt sich um eine abstrakte Maschine, die die Laufzeitumgebung bereitstellt, in der Java-Bytecode ausgeführt werden kann. Es handelt sich um eine Spezifikation, die die Funktionsweise der Java Virtual Machine spezifiziert. Die Implementierung wurde von Oracle und anderen Unternehmen bereitgestellt. Seine Implementierung ist als JRE bekannt.

JVMs sind für viele Hardware- und Softwareplattformen verfügbar (JVM ist also plattformabhängig). Es handelt sich um eine Laufzeitinstanz, die erstellt wird, wenn wir die Java-Klasse ausführen. Es gibt drei Konzepte der JVM: Spezifikation, Implementierung und Instanz.

JRE

JRE steht für Java Runtime Environment. Es ist die Implementierung von JVM. Bei der Java Runtime Environment handelt es sich um eine Reihe von Softwaretools, die zur Entwicklung von Java-Anwendungen verwendet werden. Es dient der Bereitstellung der Laufzeitumgebung. Es ist die Implementierung von JVM. Es existiert physisch. Es enthält eine Reihe von Bibliotheken und anderen Dateien, die JVM zur Laufzeit verwendet.

JDK

JDK ist eine Abkürzung für Java Development Kit. Es handelt sich um eine Softwareentwicklungsumgebung, die zur Entwicklung von Java-Anwendungen und Applets verwendet wird. Es existiert physisch. Es enthält JRE + Entwicklungstools. JDK ist eine Implementierung einer der unten aufgeführten Java-Plattformen, die von der Oracle Corporation veröffentlicht wurden:

  • Standard Edition Java-Plattform
  • Enterprise Edition Java-Plattform
  • Micro Edition Java-Plattform
Mehr Details.

6) Wie viele Arten von Speicherbereichen werden von JVM zugewiesen?

Viele Arten:

    Klassen-(Methoden-)Bereich:Der Klassenbereich speichert klassenspezifische Strukturen wie den Laufzeitkonstantenpool, Felder, Methodendaten und den Code für Methoden.Haufen:Es handelt sich um den Laufzeitdatenbereich, in dem den Objekten der Speicher zugewiesen wirdStapel:Java Stack speichert Frames. Es enthält lokale Variablen und Teilergebnisse und spielt eine Rolle beim Methodenaufruf und bei der Rückgabe. Jeder Thread verfügt über einen privaten JVM-Stack, der gleichzeitig mit dem Thread erstellt wird. Bei jedem Aufruf einer Methode wird ein neuer Frame erstellt. Ein Frame wird zerstört, wenn sein Methodenaufruf abgeschlossen ist.Programmzählerregister:Das PC-Register (Programmzähler) enthält die Adresse der aktuell ausgeführten Java Virtual Machine-Anweisung.Nativer Methodenstapel:Es enthält alle in der Anwendung verwendeten nativen Methoden.
Mehr Details.

7) Was ist ein JIT-Compiler?

Just-In-Time(JIT)-Compiler: Es dient der Leistungssteigerung. JIT kompiliert Teile des Bytecodes, die gleichzeitig eine ähnliche Funktionalität haben, und reduziert so den Zeitaufwand für die Kompilierung. Der Begriff Compiler bezieht sich hier auf einen Übersetzer vom Befehlssatz einer Java Virtual Machine (JVM) in den Befehlssatz einer bestimmten CPU.


8) Was ist die Plattform?

Eine Plattform ist die Hardware- oder Softwareumgebung, in der eine Software ausgeführt wird. Es gibt zwei Arten von Plattformen: softwarebasierte und hardwarebasierte. Java stellt die softwarebasierte Plattform bereit.


9) Was sind die Hauptunterschiede zwischen der Java-Plattform und anderen Plattformen?

Es gibt die folgenden Unterschiede zwischen der Java-Plattform und anderen Plattformen.

  • Java ist die softwarebasierte Plattform, während andere Plattformen Hardwareplattformen oder softwarebasierte Plattformen sein können.
  • Java wird auf anderen Hardwareplattformen ausgeführt, während andere Plattformen nur über die Hardwarekomponenten verfügen können.

10) Was gibt Java seinen Charakter „einmal schreiben und überall ausführen“?

Der Bytecode. Der Java-Compiler konvertiert die Java-Programme in die Klassendatei (Bytecode), die die Zwischensprache zwischen Quellcode und Maschinencode darstellt. Dieser Bytecode ist nicht plattformspezifisch und kann auf jedem Computer ausgeführt werden.


11) Was ist ein Klassenlader?

Classloader ist ein Subsystem der JVM, das zum Laden von Klassendateien verwendet wird. Immer wenn wir das Java-Programm ausführen, wird es zuerst vom Klassenlader geladen. In Java gibt es drei integrierte Klassenlader.

    Bootstrap-Klassenlader: Dies ist der erste Klassenlader, der die Oberklasse des Erweiterungs-Klassenladers ist. Es lädt die rt.jar Datei, die alle Klassendateien der Java Standard Edition enthält, wie z. B. java.lang-Paketklassen, java.net-Paketklassen, java.util-Paketklassen, java.io-Paketklassen, java.sql-Paketklassen usw.Erweiterung ClassLoader: Dies ist der untergeordnete Klassenlader von Bootstrap und der übergeordnete Klassenlader des System-Klassenladers. Es lädt die darin befindlichen JAR-Dateien $JAVA_HOME/jre/lib/ext Verzeichnis.System-/Anwendungsklassenlader: Dies ist der untergeordnete Klassenlader des Erweiterungs-Klassenladers. Es lädt die Klassendateien aus dem Klassenpfad. Standardmäßig ist der Klassenpfad auf das aktuelle Verzeichnis eingestellt. Sie können den Klassenpfad mit den Schaltern „-cp“ oder „-classpath“ ändern. Es wird auch als Anwendungsklassenlader bezeichnet.

12) Ist der Name einer leeren .java-Datei ein gültiger Quelldateiname?

Ja, Java ermöglicht das Speichern unserer Java-Datei .Java Wir müssen es nur kompilieren javac .java und vorbeilaufen Java-Klassenname Nehmen wir ein einfaches Beispiel:

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

kompilieren Sie es mit javac .java

lass es vorbei Java A


13) Ist das Schlüsselwort „delete“, „next“, „main“, „exit“ oder „null“ in Java?

NEIN.


14) Wenn ich in der Befehlszeile keine Argumente angebe, welcher Wert wird dann im String-Array gespeichert und an die main()-Methode übergeben, leer oder NULL?

Es ist leer, aber nicht null.


15) Was passiert, wenn ich static public void anstelle von public static void schreibe?

Das Programm wird korrekt kompiliert und ausgeführt, da die Reihenfolge der Spezifizierer in Java keine Rolle spielt.


16) Was ist der Standardwert der lokalen Variablen?

Die lokalen Variablen werden nicht auf einen Standardwert initialisiert, weder Grundelemente noch Objektreferenzen.


17) Was sind die verschiedenen Zugriffsspezifizierer in Java?

In Java sind Zugriffsspezifizierer die Schlüsselwörter, die verwendet werden, um den Zugriffsbereich der Methode, Klasse oder einer Variablen zu definieren. In Java gibt es unten vier Zugriffsspezifizierer.

    ÖffentlichAuf die als öffentlich definierten Klassen, Methoden oder Variablen kann von jeder Klasse oder Methode zugegriffen werden.GeschütztAuf Protected kann von der Klasse desselben Pakets oder von der Unterklasse dieser Klasse oder innerhalb derselben Klasse zugegriffen werden.StandardAuf die Standardeinstellungen kann nur innerhalb des Pakets zugegriffen werden. Standardmäßig haben alle Klassen, Methoden und Variablen den Standardbereich.PrivatAuf die als privat definierten privaten Klassen, Methoden oder Variablen kann nur innerhalb der Klasse zugegriffen werden.

18) Was ist der Zweck statischer Methoden und Variablen?

Die als statisch definierten Methoden oder Variablen werden von allen Objekten der Klasse gemeinsam genutzt. Die Statik ist Teil der Klasse und nicht des Objekts. Die statischen Variablen werden im Klassenbereich gespeichert und wir müssen kein Objekt erstellen, um auf solche Variablen zuzugreifen. Daher wird Static in dem Fall verwendet, in dem wir Variablen oder Methoden definieren müssen, die allen Objekten der Klasse gemeinsam sind.

Beispielsweise ist in der Klasse, die die Ansammlung der Studenten einer Hochschule simuliert, der Name der Hochschule das gemeinsame Attribut aller Studenten. Daher wird der Hochschulname wie folgt definiert: statisch .


19) Was sind die Vorteile von Paketen in Java?

Die Definition von Paketen in Java bietet verschiedene Vorteile.

  • Pakete vermeiden Namenskonflikte.
  • Das Paket bietet eine einfachere Zugangskontrolle.
  • Wir können auch versteckte Klassen haben, die außerhalb nicht sichtbar sind und vom Paket verwendet werden.
  • Es ist einfacher, die zugehörigen Klassen zu finden.

20) Was ist die Ausgabe des folgenden Java-Programms?

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

Die Ausgabe des obigen Codes wird sein

 30Javatpoint Javatpoint1020 

Erläuterung

Im ersten Fall werden 10 und 20 als Zahlen behandelt und zu 30 addiert. Jetzt wird ihre Summe 30 als String behandelt und mit dem String verkettet Javatpoint . Daher wird die Ausgabe sein 30 Javatpoint .

Im zweiten Fall wird die Zeichenfolge Javatpoint mit 10 verkettet, um die Zeichenfolge zu bilden Javatpoint10 welches dann mit 20 to be verkettet wird Javatpoint1020 .


21) Was ist die Ausgabe des folgenden Java-Programms?

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

Die Ausgabe des obigen Codes wird sein

 200Javatpoint Javatpoint200 

Erläuterung

Im ersten Fall werden zunächst die Zahlen 10 und 20 multipliziert und dann das Ergebnis 200 als String behandelt und mit dem String verkettet Javatpoint um die Ausgabe zu erzeugen 200 Javatpoint .

Im zweiten Fall werden die Zahlen 10 und 20 zunächst zu 200 multipliziert, da die Priorität der Multiplikation höher ist als die der Addition. Das Ergebnis 200 wird als Zeichenfolge behandelt und mit der Zeichenfolge verkettet Javatpoint um die Ausgabe als zu erzeugen Javatpoint200 .


22) Was ist die Ausgabe des folgenden Java-Programms?

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

Der obige Code gibt den Fehler bei der Kompilierung aus, da die for-Schleife im zweiten Teil einen booleschen Wert erfordert und wir einen ganzzahligen Wert bereitstellen, d. h. 0.


Core Java – OOPs-Konzepte: Erste Fragen im OOPs-Interview

Es werden mehr als 50 OOPs (Object-Oriented Programming and System)-Interviewfragen gestellt. Sie wurden jedoch zum besseren Verständnis in viele Abschnitte kategorisiert, z. B. Fragen zum Konstrukteursinterview, statische Interviewfragen, Vererbungsinterviewfragen, Abstraktionsinterviewfragen, Polymorphismusinterviewfragen usw.


23) Was ist ein objektorientiertes Paradigma?

Es handelt sich um ein Programmierparadigma, das auf Objekten basiert, deren Daten und Methoden in der Klasse definiert sind, zu der sie gehören. Das objektorientierte Paradigma zielt darauf ab, die Vorteile der Modularität und Wiederverwendbarkeit zu integrieren. Objekte sind Instanzen von Klassen, die miteinander interagieren, um Anwendungen und Programme zu entwerfen. Es gibt die folgenden Merkmale des objektorientierten Paradigmas.

  • Verfolgt beim Programmdesign den Bottom-up-Ansatz.
  • Konzentrieren Sie sich auf Daten mit Methoden zur Bearbeitung der Objektdaten
  • Enthält Konzepte wie Kapselung und Abstraktion, die die Komplexität vor dem Benutzer verbergen und nur die Funktionalität anzeigen.
  • Implementiert den Echtzeitansatz wie Vererbung, Abstraktion usw.
  • Beispiele für das objektorientierte Paradigma sind C++, Simula, Smalltalk, Python, C# usw.

24) Was ist ein Objekt?

Das Objekt ist die Echtzeiteinheit mit einem bestimmten Zustand und Verhalten. In Java ist Object eine Instanz der Klasse, deren Instanzvariablen den Zustand des Objekts und die Methoden das Verhalten des Objekts darstellen. Das Objekt einer Klasse kann mithilfe von erstellt werden neu Stichwort.


25) Was ist der Unterschied zwischen einer objektorientierten Programmiersprache und einer objektbasierten Programmiersprache?

Es gibt die folgenden grundlegenden Unterschiede zwischen der objektorientierten Sprache und der objektbasierten Sprache.

  • Objektorientierte Sprachen folgen allen Konzepten von OOPs, während die objektbasierte Sprache nicht allen Konzepten von OOPs wie Vererbung und Polymorphismus folgt.
  • Objektorientierte Sprachen verfügen nicht über integrierte Objekte, wohingegen objektbasierte Sprachen über integrierte Objekte verfügen, beispielsweise JavaScript über ein Fensterobjekt.
  • Beispiele für objektorientierte Programmierung sind Java, C#, Smalltalk usw., während Beispiele für objektbasierte Sprachen JavaScript, VBScript usw. sind.

26) Was ist der Anfangswert einer Objektreferenz, die als Instanzvariable definiert ist?

Alle Objektreferenzen werden in Java auf Null initialisiert.


Core Java – OOPs-Konzepte: Fragen zum Konstruktor-Interview


27) Was ist der Konstruktor?

Der Konstruktor kann als der spezielle Methodentyp definiert werden, der zum Initialisieren des Status eines Objekts verwendet wird. Es wird aufgerufen, wenn die Klasse instanziiert wird und der Speicher für das Objekt zugewiesen wird. Jedes Mal wird ein Objekt mit erstellt neu Mit dem Schlüsselwort wird der Standardkonstruktor der Klasse aufgerufen. Der Name des Konstruktors muss dem Klassennamen ähneln. Der Konstruktor darf keinen expliziten Rückgabetyp haben.

Mehr Details.

28) Wie viele Arten von Konstruktoren werden in Java verwendet?

Basierend auf den in den Konstruktoren übergebenen Parametern gibt es in Java zwei Arten von Konstruktoren.

    Standardkonstruktor:Der Standardkonstruktor ist derjenige, der keinen Wert akzeptiert. Der Standardkonstruktor wird hauptsächlich verwendet, um die Instanzvariable mit den Standardwerten zu initialisieren. Es kann auch zum Ausführen einiger nützlicher Aufgaben bei der Objekterstellung verwendet werden. Ein Standardkonstruktor wird implizit vom Compiler aufgerufen, wenn in der Klasse kein Konstruktor definiert ist.Parametrisierter Konstruktor:Der parametrisierte Konstruktor ist derjenige, der die Instanzvariablen mit den angegebenen Werten initialisieren kann. Mit anderen Worten können wir sagen, dass die Konstruktoren, die die Argumente akzeptieren können, parametrisierte Konstruktoren genannt werden.
Java-Konstruktoren

29) Was ist der Zweck eines Standardkonstruktors?

Der Zweck des Standardkonstruktors besteht darin, den Objekten den Standardwert zuzuweisen. Der Java-Compiler erstellt implizit einen Standardkonstruktor, wenn die Klasse keinen Konstruktor enthält.

 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(); } } 
Testen Sie es jetzt

Ausgabe:

 0 null 0 null 

Erläuterung: In der obigen Klasse erstellen Sie keinen Konstruktor, daher stellt Ihnen der Compiler einen Standardkonstruktor zur Verfügung. Hier werden vom Standardkonstruktor 0- und Nullwerte bereitgestellt.

Java-Standardkonstruktor
Mehr Details.

30) Gibt der Konstruktor einen Wert zurück?

Jahre: Ja, der Konstruktor gibt implizit die aktuelle Instanz der Klasse zurück (Sie können mit dem Konstruktor keinen expliziten Rückgabetyp verwenden). Mehr Details.


31)Wird der Konstruktor vererbt?

Nein, der Konstruktor wird nicht vererbt.


32) Können Sie einen Konstruktor endgültig machen?

Nein, der Konstruktor kann nicht endgültig sein.

Pyspark-Tutorial

33) Können wir die Konstruktoren überladen?

Ja, die Konstruktoren können überladen werden, indem die Anzahl der vom Konstruktor akzeptierten Argumente oder der Datentyp der Parameter geändert wird. Betrachten Sie das folgende Beispiel.

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

Im obigen Programm ist der Konstruktor Test mit einem anderen Konstruktor überladen. Beim ersten Aufruf des Konstruktors wird der Konstruktor mit einem Argument aufgerufen und i mit dem Wert 10 initialisiert. Beim zweiten Aufruf des Konstruktors wird jedoch der Konstruktor mit den beiden Argumenten aufgerufen und i wird initialisiert mit dem Wert 15.


34) Was verstehen Sie unter Kopierkonstruktor in Java?

In Java gibt es keinen Kopierkonstruktor. Wir können die Werte jedoch wie der Kopierkonstruktor in C++ von einem Objekt auf ein anderes kopieren.

Es gibt viele Möglichkeiten, die Werte eines Objekts in Java in ein anderes zu kopieren. Sie sind:

  • Vom Konstrukteur
  • Durch Zuweisen der Werte eines Objekts zu einem anderen
  • Mit der clone()-Methode der Object-Klasse

In diesem Beispiel kopieren wir die Werte eines Objekts mithilfe des Java-Konstruktors in ein anderes.

 //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(); } } 
Testen Sie es jetzt

Ausgabe:

 111 Karan 111 Karan 

35) Was sind die Unterschiede zwischen den Konstruktoren und Methoden?

Es gibt viele Unterschiede zwischen Konstruktoren und Methoden. Sie sind unten aufgeführt.

Java-KonstruktorJava-Methode
Ein Konstruktor wird verwendet, um den Zustand eines Objekts zu initialisieren.Eine Methode wird verwendet, um das Verhalten eines Objekts offenzulegen.
Ein Konstruktor darf keinen Rückgabetyp haben.Eine Methode muss einen Rückgabetyp haben.
Der Konstruktor wird implizit aufgerufen.Die Methode wird explizit aufgerufen.
Der Java-Compiler stellt einen Standardkonstruktor bereit, wenn Sie keinen Konstruktor in einer Klasse haben.Die Methode wird in keinem Fall vom Compiler bereitgestellt.
Der Konstruktorname muss mit dem Klassennamen identisch sein.Der Methodenname kann mit dem Klassennamen identisch sein oder auch nicht.

Java-Konstruktoren vs. Methoden

36) Was ist die Ausgabe des folgenden Java-Programms?

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

Die Ausgabe des folgenden Programms ist:

 a = 10 b = 15 

Hier wird der Datentyp der Variablen a und b, also Byte, zu int heraufgestuft und der erste parametrisierte Konstruktor mit den beiden Integer-Parametern aufgerufen.


37) Was ist die Ausgabe des folgenden Java-Programms?

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

Die Ausgabe des Programms ist 0, da die Variable i intern auf 0 initialisiert wird. Da wir wissen, dass ein Standardkonstruktor implizit aufgerufen wird, wenn in der Klasse kein Konstruktor vorhanden ist, wird die Variable i auf 0 initialisiert, da in der Klasse kein Konstruktor vorhanden ist.


38) Was ist die Ausgabe des folgenden Java-Programms?

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

Da ist ein Compilerfehler im Programm, da in der Hauptmethode ein Aufruf des Standardkonstruktors erfolgt, der in der Klasse nicht vorhanden ist. Allerdings gibt es in der Klasse Test nur einen parametrisierten Konstruktor. Daher wird vom Konstruktor implizit kein Standardkonstruktor aufgerufen.


Core Java – OOPs-Konzepte: Interviewfragen mit statischem Schlüsselwort


39) Was ist die statische Variable?

Die statische Variable wird verwendet, um auf die gemeinsame Eigenschaft aller Objekte zu verweisen (die nicht für jedes Objekt eindeutig ist), z. B. den Firmennamen der Mitarbeiter, den Hochschulnamen der Studenten usw. Die statische Variable wird im Klassenbereich nur einmal gespeichert der Zeitpunkt des Ladens der Klasse. Durch die Verwendung einer statischen Variablen wird Ihr Programm speichereffizienter (es spart Speicher). Statische Variablen gehören zur Klasse und nicht zum Objekt.

 //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(); } } 
Testen Sie es jetzt
 Output:111 Karan ITS 222 Aryan ITS 

Mehr Details.

40) Was ist die statische Methode?

  • Eine statische Methode gehört zur Klasse und nicht zum Objekt.
  • Es ist nicht erforderlich, das Objekt zum Aufrufen der statischen Methoden zu erstellen.
  • Eine statische Methode kann auf den Wert der statischen Variablen zugreifen und diesen ändern.
Mehr Details.

41) Welche Einschränkungen gelten für die statischen Java-Methoden?

Für die statischen Methoden gelten zwei wesentliche Einschränkungen.

  • Die statische Methode kann kein nicht statisches Datenelement verwenden oder die nicht statische Methode direkt aufrufen.
  • this und super können nicht im statischen Kontext verwendet werden, da sie nicht statisch sind.

42) Warum ist die Hauptmethode statisch?

Weil das Objekt nicht zum Aufrufen der statischen Methode erforderlich ist. Wenn wir die Hauptmethode nicht statisch machen, muss die JVM zuerst ihr Objekt erstellen und dann die Methode main() aufrufen, was zu einer zusätzlichen Speicherzuweisung führt. Mehr Details.


43) Können wir die statischen Methoden überschreiben?

Nein, wir können statische Methoden nicht überschreiben.

44) Was ist der statische Block?

Der statische Block wird zum Initialisieren des statischen Datenelements verwendet. Sie wird zum Zeitpunkt des Ladens der Klasse vor der Hauptmethode ausgeführt.

 class A2{ static{System.out.println('static block is invoked');} public static void main(String args[]){ System.out.println('Hello main'); } } 
Testen Sie es jetzt
 Output: static block is invoked Hello main 

Mehr Details.

45) Können wir ein Programm ohne die Methode main() ausführen?

Antwort) Nein, vor JDK 1.7 war es möglich, den statischen Block zu verwenden. Seit JDK 1.7 ist dies nicht möglich. Mehr Details.


46) Was passiert, wenn der statische Modifikator aus der Signatur der Hauptmethode entfernt wird?

Programm kompiliert. Zur Laufzeit wird jedoch der Fehler „NoSuchMethodError“ ausgegeben.


47) Was ist der Unterschied zwischen der statischen (Klassen-)Methode und der Instanzmethode?

statische oder KlassenmethodeInstanzmethode
1) Eine als statisch deklarierte Methode wird als statische Methode bezeichnet.Eine Methode, die nicht als statisch deklariert ist, wird als Instanzmethode bezeichnet.
2) Wir müssen die Objekte nicht erstellen, um die statischen Methoden aufzurufen.Das Objekt wird zum Aufruf der Instanzmethoden benötigt.
3) Auf nicht statische (Instanz-)Mitglieder kann im statischen Kontext (statische Methode, statischer Block und statische verschachtelte Klasse) nicht direkt zugegriffen werden.In Instanzmethoden kann sowohl auf statische als auch nicht statische Variablen zugegriffen werden.
4)Zum Beispiel: public static int Cube(int n){ return n*n*n;}Zum Beispiel: public void msg(){...}.

48) Können wir Konstruktoren statisch machen?

Wie wir wissen, gehört der statische Kontext (Methode, Block oder Variable) zur Klasse und nicht zum Objekt. Da Konstruktoren nur aufgerufen werden, wenn das Objekt erstellt wird, macht es keinen Sinn, die Konstruktoren statisch zu machen. Wenn Sie dies jedoch versuchen, zeigt der Compiler den Compilerfehler an.


49) Können wir die abstrakten Methoden in Java statisch machen?

Wenn wir in Java die abstrakten Methoden statisch machen, werden sie Teil der Klasse und können direkt aufgerufen werden, was unnötig ist. Der Aufruf einer undefinierten Methode ist völlig nutzlos und daher nicht zulässig.


50) Können wir die statischen Variablen und Methoden in einer abstrakten Klasse deklarieren?

Ja, wir können statische Variablen und Methoden in einer abstrakten Methode deklarieren. Da wir wissen, dass es nicht erforderlich ist, dass das Objekt auf den statischen Kontext zugreift, können wir auf den in der abstrakten Klasse deklarierten statischen Kontext zugreifen, indem wir den Namen der abstrakten Klasse verwenden. Betrachten Sie das folgende Beispiel.

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

Ausgabe

 hi !! I am good !! i = 102 

Core Java – OOPs-Konzepte: Fragen zum Vererbungsinterview


51) Was ist Das Schlüsselwort in Java?

Der Das Schlüsselwort ist eine Referenzvariable, die auf das aktuelle Objekt verweist. Es gibt verschiedene Verwendungsmöglichkeiten dieses Schlüsselworts in Java. Es kann verwendet werden, um auf aktuelle Klasseneigenschaften wie Instanzmethoden, Variablen, Konstruktoren usw. zu verweisen. Es kann auch als Argument an die Methoden oder Konstruktoren übergeben werden. Es kann auch von der Methode als aktuelle Klasseninstanz zurückgegeben werden.

Java dieses Schlüsselwort
Mehr Details.

52) Was sind die Hauptverwendungen dieses Schlüsselworts?

Es gibt die folgenden Verwendungen von Das Stichwort.

    Daskann verwendet werden, um auf die aktuelle Klasseninstanzvariable zu verweisen.Daskann verwendet werden, um die aktuelle Klassenmethode aufzurufen (implizit)Das()kann verwendet werden, um den aktuellen Klassenkonstruktor aufzurufen.Daskann als Argument im Methodenaufruf übergeben werden.Daskann als Argument im Konstruktoraufruf übergeben werden.Daskann verwendet werden, um die aktuelle Klasseninstanz von der Methode zurückzugeben.

53) Können wir die Referenz zuordnen? Das Variable?

Nein, dies kann keinem Wert zugewiesen werden, da es immer auf das aktuelle Klassenobjekt zeigt und dies die letzte Referenz in Java ist. Wenn wir dies jedoch versuchen, wird der Compilerfehler angezeigt. Betrachten Sie das folgende Beispiel.

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

Ausgabe

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

54) Kann Das Kann das Schlüsselwort verwendet werden, um auf statische Mitglieder zu verweisen?

Ja, es ist möglich, dieses Schlüsselwort zum Verweisen auf statische Elemente zu verwenden, da es sich lediglich um eine Referenzvariable handelt, die auf das aktuelle Klassenobjekt verweist. Da wir jedoch wissen, dass es nicht notwendig ist, über Objekte auf statische Variablen zuzugreifen, ist es daher nicht die beste Vorgehensweise, dies zum Verweisen auf statische Elemente zu verwenden. Betrachten Sie das folgende Beispiel.

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

Ausgabe

 10 

55) Wie kann eine Konstruktorverkettung mit diesem Schlüsselwort erfolgen?

Die Konstruktorverkettung ermöglicht es uns, einen Konstruktor von einem anderen Konstruktor der Klasse in Bezug auf das aktuelle Klassenobjekt aufzurufen. Mit diesem Schlüsselwort können wir eine Konstruktorverkettung innerhalb derselben Klasse durchführen. Betrachten Sie das folgende Beispiel, das veranschaulicht, wie wir dieses Schlüsselwort verwenden können, um eine Konstruktorverkettung zu erreichen.

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

Ausgabe

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

56) Welche Vorteile hat die Übergabe an eine Methode statt an das aktuelle Klassenobjekt selbst?

Da wir wissen, dass sich dies auf das aktuelle Klassenobjekt bezieht, muss es dem aktuellen Klassenobjekt ähnlich sein. Die Übergabe an eine Methode statt an das aktuelle Klassenobjekt kann jedoch zwei Hauptvorteile haben.

  • Dies ist eine letzte Variable. Daher kann dieser keinem neuen Wert zugewiesen werden, wohingegen das aktuelle Klassenobjekt möglicherweise nicht endgültig ist und geändert werden kann.
  • Dies kann im synchronisierten Block verwendet werden.

57) Was ist die Vererbung?

Vererbung ist ein Mechanismus, durch den ein Objekt alle Eigenschaften und Verhaltensweisen eines anderen Objekts einer anderen Klasse übernimmt. Es wird für die Wiederverwendbarkeit von Code und das Überschreiben von Methoden verwendet. Die Idee hinter der Vererbung in Java besteht darin, dass Sie neue Klassen erstellen können, die auf vorhandenen Klassen aufbauen. Wenn Sie von einer vorhandenen Klasse erben, können Sie Methoden und Felder der übergeordneten Klasse wiederverwenden. Darüber hinaus können Sie Ihrer aktuellen Klasse auch neue Methoden und Felder hinzufügen. Vererbung stellt die IS-A-Beziehung dar, die auch als Eltern-Kind-Beziehung bezeichnet wird.

In Java gibt es fünf Arten der Vererbung.

  • Vererbung auf einer Ebene
  • Mehrstufige Vererbung
  • Mehrfachvererbung
  • Hierarchische Vererbung
  • Hybride Vererbung

Mehrfachvererbung durch Klassen wird in Java nicht unterstützt.

Mehr Details.

58) Warum wird Vererbung in Java verwendet?

Die Verwendung der Vererbung in Java bietet verschiedene Vorteile, die im Folgenden aufgeführt sind.

  • Vererbung sorgt für Wiederverwendbarkeit des Codes. Die abgeleitete Klasse muss die Methode der Basisklasse nicht neu definieren, es sei denn, sie muss die spezifische Implementierung der Methode bereitstellen.
  • Ohne Vererbung kann kein Laufzeitpolymorphismus erreicht werden.
  • Wir können die Vererbung von Klassen mit den Echtzeitobjekten simulieren, was OOPs realistischer macht.
  • Durch Vererbung werden Daten ausgeblendet. Die Basisklasse kann einige Daten vor der abgeleiteten Klasse verbergen, indem sie sie privat macht.
  • Das Überschreiben von Methoden ist ohne Vererbung nicht möglich. Durch das Überschreiben von Methoden können wir eine spezifische Implementierung einer grundlegenden Methode bereitstellen, die in der Basisklasse enthalten ist.

59) Welche Klasse ist die Oberklasse aller Klassen?

Die Objektklasse ist die Oberklasse aller anderen Klassen in Java.


60) Warum wird Mehrfachvererbung in Java nicht unterstützt?

Um die Komplexität zu reduzieren und die Sprache zu vereinfachen, wird Mehrfachvererbung in Java nicht unterstützt. Stellen Sie sich ein Szenario vor, in dem A, B und C drei Klassen sind. Die C-Klasse erbt die Klassen A und B. Wenn die Klassen A und B dieselbe Methode haben und Sie sie vom untergeordneten Klassenobjekt aufrufen, besteht Unklarheit darüber, ob die Methode der Klasse A oder B aufgerufen werden soll.

Da die Fehler zur Kompilierungszeit besser sind als Fehler zur Laufzeit, rendert Java einen Fehler zur Kompilierungszeit, wenn Sie zwei Klassen erben. Unabhängig davon, ob Sie dieselbe oder eine andere Methode verwenden, tritt beim Kompilieren ein Fehler auf.

 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? } } 
Testen Sie es jetzt
 Compile Time Error 

61) Was ist Aggregation?

Aggregation kann als Beziehung zwischen zwei Klassen definiert werden, wobei die Aggregatklasse einen Verweis auf die Klasse enthält, die ihr gehört. Aggregation lässt sich am besten als a beschreiben hat ein Beziehung. Beispielsweise enthält die Aggregatklasse „Mitarbeiter“ mit verschiedenen Feldern wie „Alter“, „Name“ und „Gehalt“ auch ein Objekt der Klasse „Adresse“ mit verschiedenen Feldern wie „Adresszeile 1“, „Stadt“, „Bundesstaat“ und „PIN-Code“. Mit anderen Worten können wir sagen, dass Employee (Klasse) ein Objekt der Address-Klasse hat. Betrachten Sie das folgende Beispiel.

Adresse.java

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

Employee.java

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

Ausgabe

 111 varun gzb UP india 112 arun gno UP india 

62) Was ist Komposition?

Das Halten der Referenz einer Klasse innerhalb einer anderen Klasse wird als Komposition bezeichnet. Wenn ein Objekt das andere Objekt enthält und das enthaltene Objekt ohne die Existenz eines Containerobjekts nicht existieren kann, spricht man von einer Komposition. Mit anderen Worten können wir sagen, dass Zusammensetzung der besondere Fall der Aggregation ist, der eine stärkere Beziehung zwischen zwei Objekten darstellt. Beispiel: Eine Klasse besteht aus Schülern. Ein Schüler kann ohne eine Klasse nicht existieren. Es besteht eine Zusammensetzung zwischen Klasse und Schülern.


63) Was ist der Unterschied zwischen Aggregation und Zusammensetzung?

Aggregation stellt die schwache Beziehung dar, während Zusammensetzung die starke Beziehung darstellt. Beispielsweise verfügt das Fahrrad über einen Indikator (Aggregation), das Fahrrad jedoch über einen Motor (Zusammensetzung).


64) Warum unterstützt Java keine Zeiger?

Der Zeiger ist eine Variable, die auf die Speicheradresse verweist. Sie werden in Java nicht verwendet, da sie unsicher (ungesichert) und komplex zu verstehen sind.


65) Was ist Super in Java?

Der super Das Schlüsselwort in Java ist eine Referenzvariable, die verwendet wird, um auf das unmittelbar übergeordnete Klassenobjekt zu verweisen. Immer wenn Sie die Instanz der Unterklasse erstellen, wird implizit eine Instanz der übergeordneten Klasse erstellt, auf die durch die Superreferenzvariable verwiesen wird. Das super() wird im Klassenkonstruktor implizit vom Compiler aufgerufen, wenn es kein super oder this gibt.

 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(); } } 
Testen Sie es jetzt

Ausgabe:

 animal is created dog is created 
Mehr Details.

66) Wie kann eine Konstruktorverkettung mithilfe des Schlüsselworts super erfolgen?

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

Ausgabe

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

67) Was sind die Hauptverwendungen des Super-Schlüsselworts?

Es gibt die folgenden Verwendungen des Schlüsselworts super.

  • super kann verwendet werden, um auf die Instanzvariable der unmittelbar übergeordneten Klasse zu verweisen.
  • super kann verwendet werden, um die Methode der unmittelbar übergeordneten Klasse aufzurufen.
  • super() kann verwendet werden, um den Konstruktor der unmittelbaren übergeordneten Klasse aufzurufen.

68) Was sind die Unterschiede zwischen diesem und dem Super-Keyword?

Es gibt die folgenden Unterschiede zwischen diesem und dem Super-Schlüsselwort.

  • Das Schlüsselwort super verweist immer auf die übergeordneten Klassenkontexte, während dieses Schlüsselwort immer auf den aktuellen Klassenkontext verweist.
  • Das Schlüsselwort super wird hauptsächlich zum Initialisieren der Basisklassenvariablen im abgeleiteten Klassenkonstruktor verwendet, während dieses Schlüsselwort hauptsächlich zur Unterscheidung zwischen lokalen und Instanzvariablen verwendet wird, wenn es im Klassenkonstruktor übergeben wird.
  • Super und this müssen die erste Anweisung im Konstruktor sein, sonst gibt der Compiler einen Fehler aus.

69) Was ist die Ausgabe des folgenden Java-Programms?

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

Ausgabe

 Person class constructor called Employee class constructor called 

Erläuterung

super() wird implizit vom Compiler aufgerufen, wenn super() oder this() explizit im abgeleiteten Klassenkonstruktor enthalten ist. Daher wird in diesem Fall zuerst der Konstruktor der Person-Klasse und dann der Konstruktor der Employee-Klasse aufgerufen.


70) Können Sie this() und super() beide in einem Konstruktor verwenden?

Nein, denn this() und super() müssen die erste Anweisung im Klassenkonstruktor sein.

Beispiel:

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

Ausgabe:

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

71)Was ist das Klonen von Objekten?

Das Klonen von Objekten wird verwendet, um eine exakte Kopie eines Objekts zu erstellen. Die clone()-Methode der Object-Klasse wird zum Klonen eines Objekts verwendet. Der java.lang.Cloneable Die Schnittstelle muss von der Klasse implementiert werden, deren Objektklon wir erstellen möchten. Wenn wir die Cloneable-Schnittstelle nicht implementieren, generiert die clone()-Methode eine CloneNotSupportedException.

 protected Object clone() throws CloneNotSupportedException 
Mehr Details.

Core Java – OOPs-Konzepte: Methodenüberladende Interviewfragen


72) Was ist Methodenüberladung?

Methodenüberladung ist die Polymorphismustechnik, die es uns ermöglicht, mehrere Methoden mit demselben Namen, aber unterschiedlicher Signatur zu erstellen. Wir können eine Methodenüberladung auf zwei Arten erreichen.

  • Durch Ändern der Anzahl der Argumente
  • Durch Ändern des Datentyps von Argumenten

Das Überladen von Methoden erhöht die Lesbarkeit des Programms. Um das Programm schnell herauszufinden, wird eine Methodenüberladung durchgeführt.

Mehr Details.

73) Warum ist eine Methodenüberladung durch Ändern des Rückgabetyps in Java nicht möglich?

In Java ist eine Methodenüberladung durch Ändern des Rückgabetyps des Programms nicht möglich, um Mehrdeutigkeiten zu vermeiden.

 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 }} 
Testen Sie es jetzt

Ausgabe:

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

74) Können wir die Methoden überladen, indem wir sie statisch machen?

Nein, wir können die Methoden nicht überladen, indem wir einfach das Schlüsselwort static auf sie anwenden (Anzahl der Parameter und Typen sind gleich). Betrachten Sie das folgende Beispiel.

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

Ausgabe

 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) Können wir die main()-Methode überladen?

Ja, wir können eine beliebige Anzahl von Hauptmethoden in einem Java-Programm haben, indem wir Methodenüberladung verwenden.

Mehr Details.

76) Was ist Methodenüberladung mit Typförderung?

Mit „Typheraufstufung“ ist eine Methodenüberladung gemeint. Wir meinen, dass ein Datentyp implizit zu einem anderen heraufgestuft werden kann, wenn keine exakte Übereinstimmung gefunden wird.

Überladen von Java-Methoden mit Typförderung

Wie im obigen Diagramm dargestellt, kann das Byte auf short, int, long, float oder double heraufgestuft werden. Der kurze Datentyp kann zu int, long, float oder double heraufgestuft werden. Der Datentyp char kann auf int, long, float oder double usw. heraufgestuft werden. Betrachten Sie das folgende Beispiel.

 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); } } 
Testen Sie es jetzt

Ausgabe

 40 60 

77) Was ist die Ausgabe des folgenden Java-Programms?

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

Ausgabe

 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 

Erläuterung

Es sind zwei Methoden mit demselben Namen definiert, nämlich sum. Die erste Methode akzeptiert den Typ „Integer“ und „Long“, während die zweite Methode „Long“ und den Typ „Integer“ akzeptiert. Die übergebenen Parameter sind a = 20, b = 20. Wir können nicht sagen, welche Methode aufgerufen wird, da keine klare Unterscheidung zwischen Integer-Literal und Long-Literal erwähnt wird. Dies ist der Fall der Mehrdeutigkeit. Daher gibt der Compiler einen Fehler aus.


Core Java – OOPs-Konzepte: Methode, die Interviewfragen überschreibt


78) Was ist Methodenüberschreibung:

Wenn eine Unterklasse eine bestimmte Implementierung einer Methode bereitstellt, die bereits von ihrer übergeordneten Klasse bereitgestellt wird, wird dies als Methodenüberschreibung bezeichnet. Es wird zur Laufzeitpolymorphie und zur Implementierung der Schnittstellenmethoden verwendet.

Regeln für das Überschreiben von Methoden

  • Die Methode muss denselben Namen haben wie in der übergeordneten Klasse.
  • Die Methode muss dieselbe Signatur wie in der übergeordneten Klasse haben.
  • Zwischen zwei Klassen muss eine IS-A-Beziehung bestehen.
Mehr Details.


79) Können wir die statische Methode überschreiben?

Nein, Sie können die statische Methode nicht überschreiben, da sie Teil der Klasse und nicht das Objekt ist.


80) Warum können wir die statische Methode nicht überschreiben?

Dies liegt daran, dass die statische Methode Teil der Klasse ist und an die Klasse gebunden ist, während die Instanzmethode an das Objekt gebunden ist und die statische Methode Speicher im Klassenbereich und die Instanz Speicher in einem Heap erhält.


81) Können wir die überladene Methode überschreiben?

Ja.


82) Unterschied zwischen der Methode Überladen und Überschreiben.

MethodenüberladungMethodenüberschreibung
1) Methodenüberladung erhöht die Lesbarkeit des Programms.Das Überschreiben von Methoden stellt die spezifische Implementierung der Methode bereit, die bereits von ihrer Oberklasse bereitgestellt wird.
2) Innerhalb der Klasse kommt es zu einer Methodenüberladung.Das Überschreiben von Methoden erfolgt in zwei Klassen, zwischen denen eine IS-A-Beziehung besteht.
3) In diesem Fall müssen die Parameter unterschiedlich sein.In diesem Fall müssen die Parameter gleich sein.

83) Können wir die privaten Methoden überschreiben?

Nein, wir können die privaten Methoden nicht überschreiben, da der Umfang privater Methoden auf die Klasse beschränkt ist und wir außerhalb der Klasse nicht auf sie zugreifen können.


84) Können wir den Umfang der überschriebenen Methode in der Unterklasse ändern?

Ja, wir können den Umfang der überschriebenen Methode in der Unterklasse ändern. Wir müssen jedoch beachten, dass wir die Zugänglichkeit der Methode nicht verringern können. Beim Ändern der Zugänglichkeit der Methode muss der folgende Punkt beachtet werden.

  • Der private Wert kann in „geschützt“, „öffentlich“ oder „Standard“ geändert werden.
  • Der geschützte Wert kann in „Öffentlich“ oder „Standard“ geändert werden.
  • Der Standardwert kann auf „Öffentlich“ geändert werden.
  • Die Öffentlichkeit wird immer öffentlich bleiben.

85) Können wir die throws-Klausel der Oberklassenmethode ändern und sie gleichzeitig in der Unterklasse überschreiben?

Ja, wir können die throws-Klausel der Oberklassenmethode ändern und sie gleichzeitig in der Unterklasse überschreiben. Es gibt jedoch einige Regeln, die beim Überschreiben im Falle der Ausnahmebehandlung befolgt werden müssen.

  • Wenn die Methode der Oberklasse keine Ausnahme deklariert, kann die überschriebene Methode der Unterklasse die geprüfte Ausnahme nicht deklarieren, sie kann jedoch die ungeprüfte Ausnahme deklarieren.
  • Wenn die Oberklassenmethode eine Ausnahme deklariert, kann die überschriebene Unterklassenmethode dieselbe, eine Unterklassenausnahme oder keine Ausnahme deklarieren, aber keine übergeordnete Ausnahme deklarieren.

86) Was ist die Ausgabe des folgenden Java-Programms?

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

Ausgabe

 Base class method called with integer a = 10 

Erläuterung

Die Methode() ist in der Klasse Base überladen, während sie in der Klasse Derived mit dem Typ double als Parameter abgeleitet wird. Beim Methodenaufruf wird die Ganzzahl übergeben.

87) Können Sie in Java virtuelle Funktionen haben?

Ja, alle Funktionen in Java sind standardmäßig virtuell.


88) Was ist ein kovarianter Rückgabetyp?

Seit Java5 ist es nun möglich, jede Methode durch Ändern des Rückgabetyps zu überschreiben, wenn der Rückgabetyp der überschreibenden Unterklassenmethode der Unterklassentyp ist. Es ist als kovarianter Rückgabetyp bekannt. Der kovariante Rückgabetyp gibt an, dass der Rückgabetyp in derselben Richtung wie die Unterklasse variieren kann.

 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(); } } 
Testen Sie es jetzt
 Output: welcome to covariant return type 
Mehr Details.

89) Was ist die Ausgabe des folgenden Java-Programms?

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

Ausgabe

 Derived method called ... 

Erläuterung

Die Methode der Basisklasse, d. h. baseMethod(), wird in der abgeleiteten Klasse überschrieben. In der Testklasse bezieht sich die Referenzvariable b (vom Typ Basisklasse) auf die Instanz der abgeleiteten Klasse. Hier wird Laufzeitpolymorphismus zwischen der Klasse Base und Derived erreicht. Zur Kompilierungszeit wird das Vorhandensein der Methode „baseMethod“ in der Basisklasse überprüft. Wenn sie vorhanden ist, wird das Programm kompiliert, andernfalls wird ein Compilerfehler angezeigt. In diesem Fall ist baseMethod in der Basisklasse vorhanden. Daher wurde es erfolgreich kompiliert. Zur Laufzeit wird jedoch geprüft, ob die baseMethod von der abgeleiteten Klasse überschrieben wurde. Wenn ja, wird die Methode der abgeleiteten Klasse aufgerufen, andernfalls wird die Methode der Basisklasse aufgerufen. In diesem Fall überschreibt die Derived-Klasse die baseMethod; Daher wird die abgeleitete Klassenmethode aufgerufen.


Core Java – OOPs-Konzepte: letztes Schlüsselwort. Interviewfragen


90) Was ist die letzte Variable?

In Java wird die letzte Variable verwendet, um den Benutzer daran zu hindern, sie zu aktualisieren. Wenn wir die letzte Variable initialisieren, können wir ihren Wert nicht ändern. Mit anderen Worten können wir sagen, dass die endgültige Variable, die einmal einem Wert zugewiesen wurde, danach nie mehr geändert werden kann. Die letzte Variable, die keinem Wert zugewiesen ist, kann nur über den Klassenkonstruktor zugewiesen werden.

letztes Schlüsselwort in Java
 class Bike9{ final int speedlimit=90;//final variable void run(){ speedlimit=400; } public static void main(String args[]){ Bike9 obj=new Bike9(); obj.run(); } }//end of class 
Testen Sie es jetzt
 Output:Compile Time Error 
Mehr Details.

91) Was ist die endgültige Methode?

Wenn wir eine Methode in eine endgültige Methode ändern, können wir sie nicht überschreiben. Mehr Details.

 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(); } } 
Testen Sie es jetzt
 Output:Compile Time Error 

92) Was ist die Abschlussklasse?

Wenn wir eine Klasse endgültig machen, können wir sie nicht in eine der Unterklassen vererben.

 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(); } } 
Testen Sie es jetzt
 Output:Compile Time Error 
Mehr Details.

93) Was ist die letzte leere Variable?

Eine letzte Variable, die zum Zeitpunkt der Deklaration nicht initialisiert ist, wird als letzte leere Variable bezeichnet. Wir können die letzte leere Variable nicht direkt initialisieren. Stattdessen müssen wir es mithilfe des Klassenkonstruktors initialisieren. Dies ist nützlich, wenn der Benutzer über einige Daten verfügt, die von anderen nicht geändert werden dürfen, beispielsweise die PAN-Nummer. Betrachten Sie das folgende Beispiel:

 class Student{ int id; String name; final String PAN_CARD_NUMBER; ... } 
Mehr Details.

94) Können wir die letzte leere Variable initialisieren?

Ja, wenn es nicht statisch ist, können wir es im Konstruktor initialisieren. Wenn es sich um eine statische leere Endvariable handelt, kann sie nur im statischen Block initialisiert werden. Mehr Details.


95) Können Sie die Hauptmethode als endgültig deklarieren?

Ja, wir können die Hauptmethode als public static final void main(String[] args){} deklarieren.


96) Was ist die Ausgabe des folgenden Java-Programms?

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

Ausgabe

 20 

Erläuterung

Da i die leere Endvariable ist. Es kann nur einmal initialisiert werden. Wir haben es auf 20 initialisiert. Daher wird 20 gedruckt.


97) Was ist die Ausgabe des folgenden Java-Programms?

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

Ausgabe

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

Erläuterung

Die Methode getDetails() ist endgültig; Daher kann es in der Unterklasse nicht überschrieben werden.


98) Können wir einen Konstruktor als final deklarieren?

Der Konstruktor kann niemals als endgültig deklariert werden, da er niemals vererbt wird. Konstruktoren sind keine gewöhnlichen Methoden; Daher macht es keinen Sinn, Konstruktoren als endgültig zu deklarieren. Wenn Sie dies jedoch versuchen, gibt der Compiler einen Fehler aus.


99) Können wir eine Schnittstelle als endgültig deklarieren?

Nein, wir können eine Schnittstelle nicht als endgültig deklarieren, da die Schnittstelle von einer Klasse implementiert werden muss, um ihre Definition bereitzustellen. Daher macht es keinen Sinn, eine Schnittstelle final zu machen. Wenn Sie dies jedoch versuchen, zeigt der Compiler einen Fehler an.


100) Was ist der Unterschied zwischen der endgültigen Methode und der abstrakten Methode?

Der Hauptunterschied zwischen der endgültigen Methode und der abstrakten Methode besteht darin, dass die abstrakte Methode nicht endgültig sein kann, da wir sie in der Unterklasse überschreiben müssen, um ihre Definition anzugeben.