Java Vererbung Innerer Klassen?

1 Antwort

B ist außerhalb von A nicht sichtbar, also nein.

Wenn "B" public ist, dann ist es prinzipiell schon sichtbar. In einer von "A" erbenden Klasse kann man "B" ja als innere Klasse beerben.

0
@xtheovidx

Es geht scheinbar doch, und zwar indem B static und public ist. Dann kannst du von außerhalb "class C extends A.B{}" machen. Jedoch möchte ich anmerken, dass du sowas so ziemlich nie verwenden solltest, auch wenn es syntaktisch korrekt ist. Das ist definitiv ein verwirrender code smell.

2
@hanswurstnase

Ich habe gerade selbst nochmal herumprobiert und es klappt auch ohne static:

public class C extends A.B {
public C() {
new A().super();
}
}
0
@xtheovidx

Ja, sehr interessant, dass das geht. Aber wie bereits gesagt: sowas sollte man so ziemlich in keinem Szenario verwenden.

3
@hanswurstnase

Wieso? Solange keine Nachteile enstehen kann es einem egal sein, wenn die erbende Aussenklasse auch noch final ist kann es einem dann vollkommen egal sein.

0

IntelliJ IDEA Java "Fehler: Hauptklasse <Klassenname> konnte nicht gefunden oder geladen werden"?

Hallo,

ich habe eine kurze Java-Klasse in IntelliJ geschrieben. Wenn ich sie ausführen möchte, kommt die oben genannte Fehlermeldung. Als ich es vorher mit einer anderen Klasse getestet habe hat es funktioniert. Ich habe ich alles gleich gemacht, bis auf den anderen Klassennamen. Wenn ich das Programm über die normale Konsole (PowerShell) mit

javac HomeScreen.java

und

java HomeScreen

ausführe funktioniert es.

Beide Klassen liegen im selben Ordner und sind (meiner Meinung nach) richtig benannt.

Hier die Bilder des Quellcodes und der Einstellungen:

https://imgur.com/a/jA2oiMx

Bei der "Test"-Klasse funktioniert es.

Danke.

...zur Frage

Objekt als Referenz übergeben in Java

Hallo,

ich möchte von der Hauptklasse ein Objekt der Klasse GUI erzeugen. Dabei soll das Objekt der Hauptklasse gleich an das neu erzeugte Objekt der Klasse GUI übergeben werden.

Damit versuche ich mit dem GUI Objekt, Methoden von der Hauptklasse aufzurufen.

Wer einen anderen Weg weiß, um diese bidirektionale Assoziation herzustellen und zu ermöglichen, dass beide Objekte Methoden des jeweils anderen Objekts aufrufen können, freut mich das natürlich auch.

Ich programmiere in Java.

Grüße

...zur Frage

Jar-Archiv kein Hauptmanifestattribut

Hallo Ich wollte eben ein kleines, selbstgeschriebenes Java-Programm in ein jar-Archiv packen. Ich habe keine Manifestdatei selbst geschrieben, da mein Programm eh nur die Hauptklasse (nach dieser ist das jar-Archiv benannt) und ein ActionListener.

Die Klassen sind kompiliert und ich habe in der Eingabeaufforderung folgenden Befehl genutzt: jar -cfv MeinProgramm.jar MeinProgramm.class MeinProgramm$1MeinActionListener

Es wird ausgegeben, dass ein Manifest und die beiden Klassen hinzugefügt wurden.

Wenn ich dieses Programm jedoch mit Java -jar MeinProgramm.jar ausführen will, kommt folgende Fehlermeldung: kein Hauptmanifestattribut, in MeinProgramm.jar

Was habe ich falsch gemacht?

...zur Frage

Genaue Definition abstract Klasse und interface?

Durch die Recherche bin ich nun komplett verwirrt. Eine abstrakte Klasse ist eine Oberklasse. Ist der einzige Unterschied zu einer normalen Superklasse, dass die abstrakte Klasse abstrakte Methoden besitzt? Laut den Vorlesungsfolien besitzen abstrakte Klassen abstrakte Methoden, die aber nicht implementiert sind. Die Implementierung findet erst in der ersten konkreten Klasse statt und dort werden alle abstrakten Methoden implementiert. Aber warum? Was ist wenn diese konkrete Klasse diese Methode garnicht braucht? Wozu braucht man überhaupt die abstrakte Klasse und ihre abstrakten Methoden?

Interfaces sind ja komplett abstrakte "Klassen". Was ist der Unterschied zu abstrakten Klassen? Abstrakte Klassen können auch nicht abstrakte Methoden enthalten.. ist das der einzige Unterschied? Eine Klasse kann mehrere Interfaces haben, aber ein Interface kann nur in einer Klasse implementiert werden, stimmt das? Und auch hier werden die Methode des Interfaces in einer normalen Klasse implementiert..

Irgendwie ist mir der Unterschied zwischen abstrakte Klassen und Interfaces nicht klar, genau so warum es diese beiden "Klassen" gibt

...zur Frage

Java auf Variablen von einer Klasse in einer anderen zugreifen?

Folgendes gegeben. Ich hab 2 Klassen. Einmal die Hauptklasse und einmal eine Klasse zum lesen einer Config Datei.

Jetzt hab ich in der Klasse für die Config mehrere Variablen die ich in der Hauptklasse nutzen will. Wie kann ich das machen?

Hier der Code:

http://hastebin.com/ivepabipoc.js

Srry, dass ich das so machen muss aber der Code ist zu lang. :)

Danke für eure Hilfe.

...zur Frage

C# Klassen ermitteln, die von Interface erben

Hallo zusammen.

Ich arbeite an einem C# Projekt und möchte gerne in meinem Form.cs alle Klassen ermitteln, die vom Interface erben. Gibt es da eine Möglichkeit?

Anschliessend möchte ich dann im Form.cs die Funktion Name() aufrufen, welche in allen Klassen vorhanden ist die vom Interface erben. (Die Funktion Name() gibt einen von mir bestimmten Namen aus, welches Thema die Klasse hat)

Diese Namen möchte ich dann im Form.cs in eine ComboBox schriben.

Wenn mir jemand schon nur sagen könnte, wie ich alle Klassen, die vom Interface erben ermitteln kann, komme ich evt. sogar selber weiter.

Danke für eure Hilfe =)

...zur Frage

Was möchtest Du wissen?