Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo zusammen. Ich habe da mal eine Frage zu Super, extends und einem Rückgabewert.
Ich habe in meiner Klasse Super zwei Klassen A und B, wobei B von A vererbt. In den Klassen A und B habe ich jeweils die Methode boolean aWert(). Ich möchte in der Klasse B, in der Methode aWert() wissen, ob in der Klasse A in der selben Methode aWert true oder false ist. Wie muss mein Rückgabewert an der Stelle sein, wo die vielen Fragezeichen stehen?
Für einen Tipp wäre ich froh.
Danke.
Java:
class Super{
static class A{
boolean aWert;
boolean bWert;
A(){
aWert = true;
}
boolean AWert(){
return aWert;
}
}
static class B extends A{
B(){
bWert = false;
}
boolean AWert(){
super.AWert();
return ???????????????????????????????????????????????;
}
}
public static void main(String[] args) {
..........
}
}
Ich möchte von meiner Methode boolean AWert() in der Klasse B wissen, ob in der Klasse A, in der selben Methode der Wert aWert true oder false ist und ihn als Rückgabewert zurückgeben.
public class Super
{
protected interface ValueReturn
{
boolean returnValue();
}
protected class A implements ValueReturn
{
private final boolean aValue;
public A()
{
aValue = true;
}
@Override
public boolean returnValue()
{
return this.aValue;
}
}
protected class B implements ValueReturn
{
private final A a;
public B(A a)
{
this.a = a;
}
@Override
public boolean returnValue()
{
return this.a.returnValue();
}
}
}
Egal wie, dein Code sieht irgendwie seltsam aus.. Welcher Sinn steckt denn dahinter?
Für einen Javaeinsteiger wie mich hat das Wort "seltsam" sicherlich eine andere Bedeutung als für dich.
Entweder es funktioniert oder nicht.
...es war halt eine Aufgabe, wo ich vereinfacht, einen Sachverhalt rausgefischt habe.
Ich dachte, man benötigt, um auf die selbe Methode in einer Oberklasse zugreifen zu können, den Ausdruck super?
Wichtig ist auch, dass Klasse B extends A vorhanden ist.
Auf jeden Fall waren Interfaces und implements noch nicht Gegenstand der Vorlesung.
Wenn B.AWert() dasselbe zurückgeben soll wie A.AWert(), dann überschreibe die Methode AWert() in B einfach nicht. Du willst innerhalb von B.AWert() wissen, ob A.AWert() true oder false zurückliefern würde?? Und was willst du dann mit der Information machen? Willst du diesen Wert dann einfach an den Aufrufer weiterleiten, dann wie gesagt - überschreibe die Methode einfach nicht. Oder willst du in B.AWert() Logik ausführen basierend auf dem Wert von A.AWert()? Dann verwende einfach das Ergebnis von `super.AWert()` innerhalb von B.AWert(). Du rufst die super-Methode ja schon auf, machst nur nichts mit dem Rückgabewert aktuell.
In deiner Unterklasse brauchst du die Methode "AWert()" garnicht, die ist komplett überflüssig. Wenn du die trotzdem implementieren willst und dabei super benutzen willst könntest du das so machen:
Wie kann ich das tun? Also wie kann ich den Wert von A.AWert() mir als boolean geben lassen?
ich kann ja in der B Klasse in der Methode AWert() nicht schreiben:
boolean Neu = super.AWert();
Ich wollte es ursprünglich so machen:
Java:
class B extends A{
boolean AWert(){
if(super.AWert){
System.out.println("Stimmt");
}else{
System.out.println("Stimmt nicht");
}
}
}
@Tarrew
return super.Methode();
Das war der Ausdruck, den ich gesucht habe.