Getter von Super-Klasse funktioniert nicht

Avarion

Mitglied
Hey zusammen :=)

Habe ein Problem: In meinem Programm (siehe unten) gibt die Konsole bei der Methode beispiel() immer "0" aus, wenn ich den Wert der Variable "b" mit dem Getter abrufen möchte. Zur Verständlichkeit: Klasse A ist die Superklasse von B und in C will ich auf den Getter von Klasse B zugreifen der von Klasse A vererbt worden ist. Aber wie gesagt ich erhalte immer nur null. Wenn ich direkt in Klasse B den setter aufrufe erhalte ich kurioser Weise ein richtiges Ergebnis:

Java:
public class A{

    protected float dx;

    public A(){
        //Konstruktor etc..
    }

    public float getDX(){
        return this.dx;
    }
}


//Klasse B erbt von A

public class B extends A{

    public B(){
        super();
        dx = 1; //überschreibt dx von A
    }
}


public class C{

    private A a;

    public C(A a){    //Hier gebe ich später new B() ein, da B ja von A geerbt hat und somit auch ein Objekt A ist.
        this.a = a;
    }

    public void beispiel(){
        System.out.println(a.getDX());

        //irgendwie kommt hier immer 0 raus?!!
    }
}
 
Zuletzt bearbeitet:

X5-599

Top Contributor
@Avarion
Bei mir funktioniert der Code wie erwartet. Kann es sein, dass du etwas anderen Code hier gepostet als du bei dir ausführst?
 

kaoZ

Top Contributor
Interessant wäre mal die main methode und zu sehen was genau du vor ausführung deiner beispiel methode intanziierst ;)

Das hier funktioniert übrigends wie zu erwarten , und gibt 2 aus:

Java:
public class Test{
	
	public static void main(String[] args){
		C c = new C(new B());
		
		System.out.println(c.getX());
	}
	
}

class A{
	
	protected int x;
	
	int getX(){return x;}
}

class B extends A{
	
	public B(){
		x = 2;
	}
}

class C{
	private A a;
	
	
	public C(A a){
		this.a = a;
	}
	
	String getX(){
		return String.valueOf(a.getX());
	}
}
 
Zuletzt bearbeitet:

Avarion

Mitglied
Interessant wäre mal die main methode und zu sehen was genau du vor ausführung deiner beispiel methode intanziierst ;)

Das hier funktioniert übrigends wie zu erwarten , und gibt 2 aus:

Java:
public class Test{
	
	public static void main(String[] args){
		C c = new C(new B());
		
		System.out.println(c.getX());
	}
	
}

class A{
	
	protected int x;
	
	int getX(){return x;}
}

class B extends A{
	
	public B(){
		x = 2;
	}
}

class C{
	private A a;
	
	
	public C(A a){
		this.a = a;
	}
	
	String getX(){
		return String.valueOf(a.getX());
	}
}

Meine Klasse C liegt in einem anderen Paket als A und B, kann es vielleicht daran liegen? Meine mal sowas ähnliches gelesen zu haben..
Mein richtiger Code ist ziemlich groß, wäre vlt unübersichtlich alles ohne einen Kontext zu posten
 

Joose

Top Contributor
Nein in welchem Paket die Klassen liegen ist hier eigentlich unrelevant.

Kannst du sichergehen das an den Konstruktor von C ein Objekt von B übergeben wird?
Das wäre der einzige logische Grund (den man anhand des Beispiels erkennen kann) warum "a.getX()" einen falschen Wert liefert.
Erweitere die Methode deine Methode "getX()" einfach mal:

Java:
class C{
.......
 
String getX(){
   if(a instanceof B) {
      System.out.println("C.getX - bin ein B!");
   }
   return String.valueOf(a.getX());
}
}
 

kaoZ

Top Contributor
Ist der Wirkungsbereich von protected nicht nur package intern zwischen erbenden Klassen, mir war so !?
 
Zuletzt bearbeitet:

Avarion

Mitglied
Nein eigentlich sollte protected zwischen erbenen Klassen wirksam sein egal welches Package.
Siehe: java - subclass inheritance with different packages? - Stack Overflow

Ich habe das jetzt mal mit dem instanceof ausprobiert und ich habe sogar mal eine Zahl erhalten, nämlich 0.9284767, immerhin schon einmal nah an der erhofften 1 dran, allerdings zeigt er mir die Zahl nur 1x an und dann konstant eine null.

Ich poste jetzt mal meinen ganzen Code wo mein Fehler drinnen auftaucht:


Java:
//Superklasse Entity
public class Entity {

	protected float x;
	protected float y;
	protected float dx;
	protected float dy;
	protected float speed;
	
	public Entity(float x, float y, float speed){
		this.x = x;
		this.y = y;
		this.speed = speed;
	}
	
	public float getDX(){
		return this.dx;
	}
	
	public float getDY(){
		return this.dy;
	}
}


////////////////////////////////////////////////////////////

public class Player extends Entity{ //erbt von Entity

//bis hier hin habe ich mal den Code gekürzt, damit es für euch übersichtlicher ist ;)

       public Player(){
          //Konstruktor etc...
       }

	public void update(){
		hb.update();
		animation.update();
		
		if(left && !Playstate.map.isColliding(new Point((int)x, (int)y + 4), new Point((int)x, (int)(y + height - 4))) && !down && !up && !right){

		        dx = -speed; //Hier wird dx einen Wert zugewiesen!     <----WICHTIG

		}
		
		if(right && !Playstate.map.isColliding(new Point((int)(x + width), (int)y + 4), new Point((int)(x + width), (int)(y + height - 4))) && !down && !left && !up){

			dx = speed;  //Hier wird dx einen Wert zugewiesen!     <----WICHTIG

		}

		x += dx;
		y += dy;
		
		dx = 0;
		dy = 0;
	}
}

////////////////////////////////////////////////////////////

public class Animation{

        public Animation(Entity entity){
		this.entity = entity;
	}
	
	
	 public void update(){
		
	       System.out.println(entity.getDX()); //HIER ERHALTE ICH 0, warum???!
		
         } 
}
 
Zuletzt bearbeitet:

stg

Top Contributor
Vielleicht, weil du (in Zeile 56) ganz explizit dx=0 setzt? Nur so ne Idee... :popcorn:
 
Zuletzt bearbeitet:

Avarion

Mitglied
Vielleicht, weil du (in Zeile 56) ganz explizit dx=0 setzt? Nur so ne Idee... :popcorn:

̶k̶̶a̶̶n̶̶n̶̶ ̶̶e̶̶i̶̶g̶̶ ̶̶n̶̶i̶̶c̶̶h̶̶t̶̶,̶̶ ̶̶i̶̶n̶̶ ̶̶d̶̶e̶̶r̶̶ ̶̶u̶̶p̶̶d̶̶a̶̶t̶̶e̶̶ ̶̶m̶̶e̶̶t̶̶h̶̶o̶̶d̶̶e̶̶ ̶̶v̶̶o̶̶m̶̶ ̶̶p̶̶l̶̶a̶̶y̶̶e̶̶r̶̶ ̶̶ü̶̶b̶̶e̶̶r̶̶w̶̶e̶̶i̶̶s̶̶e̶̶ ̶̶i̶̶c̶̶h̶̶ ̶̶d̶̶e̶̶n̶̶ ̶̶w̶̶e̶̶r̶̶t̶̶ ̶̶1̶

Achsoo.. jetzt habe ich den Fehler gefunde, vielen Dank nochmal an Alle!! :) lag wirklich daran.. ;)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Getter/Setter - wie sieht ein Setter aus? Und wie nicht? Java Basics - Anfänger-Themen 34
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
W Getter/Setter Java Basics - Anfänger-Themen 4
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
KogoroMori21 Objektvariable anderer Klasse übernehmen, Getter/Setter Java Basics - Anfänger-Themen 11
T Verständnisfrage Objekt Getter Setter Java Basics - Anfänger-Themen 102
KogoroMori21 Getter und Setter Java Basics - Anfänger-Themen 5
O Instanzattribut per Getter Methode zuweisbar, warum? Java Basics - Anfänger-Themen 8
P Klassenübergreifende Ausgabe mittels "getter" nicht möglich Java Basics - Anfänger-Themen 21
J Array über Getter erlangen Java Basics - Anfänger-Themen 34
S Klassen instanziieren und verwenden von Getter und Setter Java Basics - Anfänger-Themen 4
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
V getter/setter Garage Java Basics - Anfänger-Themen 12
M Getter einer PriorityQueue Java Basics - Anfänger-Themen 1
KopaCoda Getter mehrfach aufrufen -> ist das guter code? Java Basics - Anfänger-Themen 3
V Getter Methode Java Basics - Anfänger-Themen 38
S getter, setter in abstrakter Klasse oder lieber Unterklassen Java Basics - Anfänger-Themen 4
topi Kapselung getter und setter Java Basics - Anfänger-Themen 5
D Setter/Getter für Instanzvariablen praktisch? Java Basics - Anfänger-Themen 19
S Getter/Setter - Variablenklasse ? Java Basics - Anfänger-Themen 5
S getter and setter Java Basics - Anfänger-Themen 12
L Getter und Setter Java Basics - Anfänger-Themen 2
T Extrahiertes Objekt durch Getter bekommen Java Basics - Anfänger-Themen 2
M Generics getter und setter Methoden Java Basics - Anfänger-Themen 4
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
A getter Java Basics - Anfänger-Themen 3
E Methoden Objekte in Methode aufrufen ohne getter und setter? Java Basics - Anfänger-Themen 1
T Getter für Array Java Basics - Anfänger-Themen 4
J-Gallus Ein Getter bekommt eine anderen Type als er Return soll Java Basics - Anfänger-Themen 9
K Public Attribute oder getter - funktioniert leider beides hier nicht Java Basics - Anfänger-Themen 5
L Klassen - Getter & Setter Methoden Java Basics - Anfänger-Themen 2
D Erste Schritte Java - Setter und Getter Java Basics - Anfänger-Themen 1
Z Getter/Setter NullPointer Exception Java Basics - Anfänger-Themen 6
P getter Java Basics - Anfänger-Themen 1
K Klassen Setter/Getter Java Basics - Anfänger-Themen 3
F OOP Schleifen und Probleme mit Setter und Getter Java Basics - Anfänger-Themen 1
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
M Getter Problematik mit ItemListener Java Basics - Anfänger-Themen 17
K Kapselung getter & setter Java Basics - Anfänger-Themen 11
S Array und Getter-Methode Java Basics - Anfänger-Themen 2
J Frage zu Setter u. Getter Java Basics - Anfänger-Themen 7
T Variablen Getter-Setter vs Public Variable? Java Basics - Anfänger-Themen 5
Y Konstruktor - Setter/Getter Java Basics - Anfänger-Themen 3
N Klassen fragen zur getter und setter methode Java Basics - Anfänger-Themen 11
D Ab wann getter und setter Java Basics - Anfänger-Themen 2
J Variable per Getter holen - wie ? Java Basics - Anfänger-Themen 2
K getter & setter Java Basics - Anfänger-Themen 6
C getter/setter Problem anscheinend Java Basics - Anfänger-Themen 13
D Getter Mehtode Unsicher Java Basics - Anfänger-Themen 6
G Erste Schritte Getter und Setter Java Basics - Anfänger-Themen 12
B Getter,Setter - Konstruktor überflüssig? Java Basics - Anfänger-Themen 26
N Sprite Methode (Getter, Setter, Konstruktor) Java Basics - Anfänger-Themen 9
S getter/setter aufrufen Java Basics - Anfänger-Themen 9
B Java getter/setter funktioniert nicht! Java Basics - Anfänger-Themen 7
X OOP Getter/Setter überschreiben den Wert ihrer Variablen nicht Java Basics - Anfänger-Themen 4
T Erste Schritte Verständnisfrage: Getter und Setter Methoden Java Basics - Anfänger-Themen 3
M Problem mit getter, liefert nur alte Werte Java Basics - Anfänger-Themen 6
V public Variablen vs Getter + Setter Java Basics - Anfänger-Themen 4
F Getter und Setter Java Basics - Anfänger-Themen 4
lulas[]args getter/setter umstellung Java Basics - Anfänger-Themen 6
El_Lobo Methoden Zu viele Getter- und Settermethoden - geht das einfacher? Java Basics - Anfänger-Themen 3
G Generics kein Zugriff auf getter eines Objekts Java Basics - Anfänger-Themen 4
B Klassen Getter-Setter vor neuem Klassenaufruf - wie? Java Basics - Anfänger-Themen 20
M OOP Aufruf vieler Getter Methoden abkürzen? Java Basics - Anfänger-Themen 7
N OOP Getter, Setter und andere Probleme Java Basics - Anfänger-Themen 8
A OOP Getter und Setter Java Basics - Anfänger-Themen 18
MU5T4NG Getter und Setten bei GUI-Erstellung Java Basics - Anfänger-Themen 13
B Variablen keine Arrayübergabe für getter im Interface Java Basics - Anfänger-Themen 8
L Unterschied Konstruktor / Getter Setter Java Basics - Anfänger-Themen 13
L Setter und Getter für Arrays? Java Basics - Anfänger-Themen 4
N boolean bei Setter und getter methoden Java Basics - Anfänger-Themen 21
J int Wert mit getter holen und in String parsen Java Basics - Anfänger-Themen 5
O Universeller GETTER Java Basics - Anfänger-Themen 5
J Die Getter Methode Java Basics - Anfänger-Themen 6
J Getter und Setter auch intern benutzen - guter Stil? Java Basics - Anfänger-Themen 31
Houly Setter/Getter MEthoden testen Java Basics - Anfänger-Themen 4
P OOP Getter&Setter Methoden funktionieren nicht Java Basics - Anfänger-Themen 7
E [Erledigt] Schöner Code zur Reduktion von unzähligen Getter-Methoden Java Basics - Anfänger-Themen 2
H Setter-und-Getter-Konvention Java Basics - Anfänger-Themen 8
V Reflection API - getter und setter Java Basics - Anfänger-Themen 7
-horn- EINE setter/getter klasse aus mehreren klassen befüllen Java Basics - Anfänger-Themen 13
C Getter/Setter Java Basics - Anfänger-Themen 61
F 2 dimensionales Array getter Methode Java Basics - Anfänger-Themen 3
H Frage zu getter und setter Java Basics - Anfänger-Themen 5
S Unbenutzte/überflüssige Getter/Setter herausfinden? Java Basics - Anfänger-Themen 2
K Getter Java Basics - Anfänger-Themen 6
M getter/setter bei JTextField ? Java Basics - Anfänger-Themen 21
G warum Setter/Getter Java Basics - Anfänger-Themen 25
S In einer Liste auf getter und setter zugreifen Java Basics - Anfänger-Themen 6
S JTextField in anderer Classe mit getter Methode auslesen. Java Basics - Anfänger-Themen 2
M if oder verschiedene getter Java Basics - Anfänger-Themen 31
A "Super" anwenden Java Basics - Anfänger-Themen 13
mrStudent <? extends T> und <? super T> Java Basics - Anfänger-Themen 1
Say super.methode / super.variable und super(variable) Java Basics - Anfänger-Themen 2
M Super(); Java Basics - Anfänger-Themen 1
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
N extends und super vs new object Java Basics - Anfänger-Themen 4
CptK Vererbung Attributtyp in Super-Klasse noch nicht festlegen Java Basics - Anfänger-Themen 1
B Warum können super() und this() nicht gemeinsam in einem Konstruktor verwendet werden? Java Basics - Anfänger-Themen 7
Queiser Super boolean Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben