Problem mit dem Auslesen einer Varible/Methode

packman_

Mitglied
hi!

Ich hab folgendes Problem:

Mein Programm enthält 3 Klassen, die abstrakte Klasse 'Produkt' ist die Superklasse von 'Artikel' und 'Dienstleistung'. 'Dienstleistung' enthält eine private Variable 'einheit', die nicht in 'Artikel' enthalten ist und über den Getter getEinheit() abgerufen werden kann.

Nun hab ich eine Methode z.b. Rechnungsposition(Produkt p) in der ich auf die Variable einheit zugreifen will falls sie existiert, bzw. das übergebene Produkt eine 'Dienstleistung' war. Wie geht das? Einfach p.getEinheit() spuckt mir eine Fehlermeldung aus.

Danke!
 
Zuletzt bearbeitet:
wenn wir die fehlermeldung und den code hätten, könnten wir besser verfolgen wo der fehler liegt, so könnten wir nur raten.

ist es eine NullPointerException?
 
wie strußi schon sagte.
Wenn du eine Fehlermeldung hast, dann teile sie mit uns! (inkl. StackTrace wenn möglich)

Wo liegt denn die Methode "Rechnungsposition(Produkt p)"? (Anmerkung: Methodennamen immer im lowerCamelCase schreiben)
 
Hier die Information was ein StackTrace ist!

Diesen hat man zur Verfügung wenn zur Laufzeit ein Fehler auftritt.
In deinem Fall ist das Ganze ein Compiler Fehler -> der Compiler hat einen Fehler beim kompilieren 😉

Leider vedeckt nun die Fehlermeldung einen Teil vom Code. Aber so wie es ausschaut willst du einen formatierten Text ausgeben und dafür auch noch etwas berechnen.

Hier wäre es möglich mit einer Typabfrage und einem Cast zu arbeiten.
Java:
if(p instanceof Dienstleistung) {
    Dienstleistung temp = (Dienstleistung)p;
    .....
}
 
.....
return ... + String.format("%-3.3s", p.getEinheit()) + ...
Das funktioniert immer noch nicht, hab leider die selbe Fehlermeldung.

Das ist ja auch logisch. Über p greifst du immer noch auf ein Objekt zu welches ein Produkt ist und somit keine Methode getEinheit kennt.
Deswegen haben wir gecastet
Code:
Dienstleistung temp = (Dienstleistung)p;
-> nun kannst du über temp.getEinheit() deine Einheit abfragen.

Das sind Grundlagen der Polymorphie -> sollest du dir nochmal genauer anschauen da du es später immer wieder brauchen wirst!
 

Neue Themen


Zurück
Oben