magicmarcy.de | Java Interview-Fragen: #2 Objektorientierte Programmierung (OOP)

Java Interview-Fragen: #2 Objektorientierte Programmierung (OOP)

14. April 2025 - Lesezeit: 22 Minuten

Kürzlich habe ich einen Artikel gelesen, in dem es um Fragen in einem Vorstellungsgespräch als Java-Entwickler ging. Es wurden einige Fragen vorgestellt und die These aufgestellt, dass die meisten Bewerber diese Fragen nicht beantworten können.

Aus diesem Grund möchte ich in dieser Serie auf diese Java Fragen im Vorstellungsgespräch eingehen und sie beantworten.

In meinem Blog schreibe ich häufig Artikel, die sich an Java Anfänger richten, daher sind diese Fragen vielleicht auch für dich von besonderem Interesse. Ich möchte diese und weitere Fragen in einer Serie vorstellen, damit auch du besser auf dein nächstes Bewerbungsgespräch vorbereitet bist. Die Serie wird insgesamt 5 Themenbereiche umfassen: Java Grundlagen, Objektorientierte Programmierung (OOP), Datenstrukturen und Algorithmen, Exception Handling und Multithreading und ich werde auf die wichtigsten Fragen zu diesen Themen eingehen, die Antworten und falls nötig auch weitere Informationen dazu geben. Wenn du am Ende noch Fragen dazu hast oder etwas unklar ist, kannst du gerne einen Kommentar unter diesem Beitrag hinterlassen.

Im heutigen Beitrag geht es nun um Fragen zur Objektorientierte Programmierung (OOP).

#1 Was sind die objektorientierten Funktionen, die Java unterstützt?

Kurz: Kapselung, Vererbung, Polymorphismus, Abstraktion, Klassen und Objekte

Lang: Java ist eine objektorientierte Programmiersprache und unterstützt die folgenden objektorientierten Merkmale:

  • Kapselung: die Implementierungsdetails eines Objekts vor anderen Objekten zu verbergen. Dies wird durch die Verwendung von Zugriffsmodifikatoren erreicht
  • Vererbung: ermöglicht, dass eine neue Klasse auf einer bestehenden Klasse basiert und deren Attribute und Methoden erbt. Dies ermöglicht die Wiederverwendung von Code und erleichtert die Erstellung neuer Klassen, die gemeinsame Eigenschaften mit bestehenden Klassen haben
  • Polymorphismus: ermöglicht, Objekte verschiedener Klassen so zu behandeln, als wären sie Objekte einer gemeinsamen Oberklasse. Dies kann durch Methodenüberschreibung und Methodenüberladung erreicht werden
  • Abstraktion: das Ausblenden komplexer Implementierungsdetails und die Bereitstellung einer vereinfachten Schnittstelle für den Benutzer. Dies kann durch abstrakte Klassen und Schnittstellen erreicht werden
  • Klassen und Objekte: Java ist eine klassenbasierte Sprache, was bedeutet, dass sie Konstrukte zur Definition von Klassen und zur Erstellung von Objekten aus diesen Klassen bereitstellt.

#2 Was sind die verschiedenen Zugriffmodifikatoren in Java?

Java hat 4 verschiedene Zugriffsmodifikatoren:

  • public: Kann von jeder Klasse oder Methode aufgerufen werden
  • protected: Kann von einer Klasse aus dem gleichen Package, einer Kind-Klasse dieser Klasse oder innerhalb der eigenen Klasse aufgerufen werden
  • default: Zugriff nur innerhalb des gleichen Package. Das ist die default-Option für alle Klassen, Methoden und Variablen
  • private: Zugriff nur aus der gleichen Klasse

#3 Was ist der Unterschied zwischen Kompoition und Vererbung?
Komposition ist eine "hat eine" Beziehung (eine Klasse beinhaltet ein Mitglied einer anderen Klasse in einer Variablen). Vererbung ist eine "ist eine" Beziehung (eine Klasse erweitert eine Oberklasse um die Eigenschaften und Methoden zu erben)

#4 Was ist der Zweck einer abstrakten Klasse?
Eine abstrakte Klasse ist eine Klasse, die nicht instanziiert werden kann und als Basisklasse verwendet wird, von der andere Klassen erben können. Sie kann abstrakte Methoden enthalten, die in der abstrakten Klasse deklariert, aber nicht implementiert sind und in den Unterklassen implementiert werden müssen

#5 Was ist der Unterschied zwischen einem Konstruktor und einer Methode einer Klasse in Java?
Der Konstruktor wird zur Initialisierung des Objektzustands verwendet, während die Methode dazu dient, das Verhalten des Objekts darzustellen. Konstruktoren haben keinen Rückgabetyp, aber Methoden sollten einen Rückgabetyp haben. Auch wenn sie nichts zurückgeben, ist der Rückgabetyp void. Wenn der Konstruktor nicht definiert ist, wird vom Java-Compiler ein Standardkonstruktor bereitgestellt. Der Konstruktorname sollte mit dem Klassennamen übereinstimmen. Ein Konstruktor kann nicht als final gekennzeichnet werden, denn wenn eine Klasse vererbt wird, werden die Konstruktoren nicht vererbt. Eine Methode kann als final definiert werden, aber sie kann in ihren Unterklassen nicht überschrieben werden.

#6 Was ist das Diamond-Problem in Java und wie kann man es lösen?
Das Diamand-Problem ist ein Problem, das in Programmiersprachen auftreten kann, die Mehrfachvererbung unterstützen, wenn eine Klasse von zwei oder mehr Klassen erbt, die einen gemeinsamen Vorfahren haben. Dies kann zu Unklarheiten in der Reihenfolge der Methodenauflösung führen, was zu unvorhersehbarem Verhalten führt. In Java wird die Mehrfachvererbung nicht direkt unterstützt, aber sie kann durch Schnittstellen simuliert werden. Eine Klasse kann eine oder mehrere Schnittstellen implementieren und damit deren Eigenschaften und Methoden erben.

#7 Was ist der unterschied zwischen einer lokalen und einer Instanz-Variablen in Java?
Instanzvariablen sind für alle Methoden der Klasse zugänglich. Sie werden außerhalb der Methoden und innerhalb der Klasse deklariert. Diese Variablen beschreiben die Eigenschaften eines Objekts und bleiben an dieses gebunden. Lokale Variablen sind die Variablen, die innerhalb eines Blocks, einer Funktion oder eines Konstruktors vorhanden sind und auf die nur innerhalb dieses Blocks zugegriffen werden kann. Die Verwendung der Variablen ist auf den Blockbereich beschränkt.

#8 Was ist ein Marker-Interface in Java?
Marker-Schnittstellen oder Tagging-Schnittstellen sind Schnittstellen, in denen keine Methoden und Konstanten definiert sind. Sie helfen dem Compiler und der JVM, laufzeitbezogene Objektinformationen zu erhalten.

Hand aufs Herz: Wie viele dieser Fragen hättest du ohne langes Nachdenken beantworten können? Lass es mich in den Kommentaren wissen!

Sasha
Geschrieben von Sasha am 16. April 2025
Sehr gute und präzise Zusammenfassung und auf das Wichtigste reduziert. Wahrlich hilfreich, vielen Dank dafür!

Support

Wenn du mich und meine Arbeit unterstützen möchtest, freue ich mich sehr über eine kleine Aufmerksamkeit in Form eines Kaffees ;-)



Weitere Informationen, wie du mich und meine Arbeit unterstützen kannst, findest du hier.