bspainkf36
Erfahrenes Mitglied
Hey Leute 
ich hätte da mal eine spezielle Frage zu einem Programm. Danke schon mal für die Hilfe
Also ich habe eine abstracte Oberklasse (Artikel) und zwei weiter Klasse(Handelsartikel und Werkstattartikel), welche von der Oberklasse erben, sowie eine seperate Klasse(Laden) mit der ich instanzen erzeuge! Hier mein Quellcode ... er ist nicht all zu lang, daher bin ich mal so frei und poste ihn ganz
P
Das Problem liegt in der Klasse Laden. Dort gebe ich die Artikelnummer und den Gewinn( in der Oberklasse als abstract deklariert und in der Unterklasse implementiert) aus.
Auf diese Daten kann ich ohne Probleme zugreifen und ausgeben. Wenn ich jedoch probiere auf die Methode getMaterialkosten() zuzugreifen, die nicht in der Klasse Artikel deklariert wird, da sie nicht vererbt werden soll, scheitert dies.
Meine Frage wäre jetzt, wie kann ich auf die Methoden von den Unterklassen zugreifen umd die Daten zu verwerten.
Die Oberklasse Artikel
Die erbende Klasse Handelsartikel
Die erbende Klasse Werkstattartikel
DANKE noch mal für die Hilfe
Viele Grüße Kon

ich hätte da mal eine spezielle Frage zu einem Programm. Danke schon mal für die Hilfe

Also ich habe eine abstracte Oberklasse (Artikel) und zwei weiter Klasse(Handelsartikel und Werkstattartikel), welche von der Oberklasse erben, sowie eine seperate Klasse(Laden) mit der ich instanzen erzeuge! Hier mein Quellcode ... er ist nicht all zu lang, daher bin ich mal so frei und poste ihn ganz

Das Problem liegt in der Klasse Laden. Dort gebe ich die Artikelnummer und den Gewinn( in der Oberklasse als abstract deklariert und in der Unterklasse implementiert) aus.
Auf diese Daten kann ich ohne Probleme zugreifen und ausgeben. Wenn ich jedoch probiere auf die Methode getMaterialkosten() zuzugreifen, die nicht in der Klasse Artikel deklariert wird, da sie nicht vererbt werden soll, scheitert dies.
Meine Frage wäre jetzt, wie kann ich auf die Methoden von den Unterklassen zugreifen umd die Daten zu verwerten.
Die Oberklasse Artikel
Code:
package info2;
abstract class Artikel {
private String artikelnummer = "ohne";
public Artikel() {
}
public Artikel (String ean) {
this.artikelnummer = ean;
}
public String getArtikelnummer(){
return artikelnummer;
}
public abstract double gewinn();
}
Die erbende Klasse Handelsartikel
Code:
package info2;
class HandelsArtikel extends Artikel{
double einkaufspreis;
double gewinnspanne; // Prozentualer Gewinnaufschlag
public HandelsArtikel (String ean, double ep, double gs) {
super (ean);
this.einkaufspreis = ep;
this.gewinnspanne = gs;
}
public double gewinn() {
return (gewinnspanne * einkaufspreis);
}
}
Die erbende Klasse Werkstattartikel
Code:
package info2;
class WerkstattArtikel extends Artikel {
double materialkosten; // enthält bereits Gemeinkosten
double fertigungskosten; // enthält bereits Gemeinkosten
double gewinnspanne; // Prozentualer Gewinnaufschlag
public WerkstattArtikel (String an, double mk, double fk, double gs) {
super(an);
this.materialkosten = mk;
this.fertigungskosten = fk;
this.gewinnspanne = gs;
}
public double gettest() {
return this.materialkosten;
}
public double gewinn() {
return (gewinnspanne * (materialkosten + fertigungskosten));
}
public void setMaterialkosten(double mk){
this.materialkosten = mk;
}
public double getMaterialkosten(){
return materialkosten;
}
}
Code:
package info2;
class Laden {
public Laden() {
}
public static void main(String[] args) {
Artikel ware[] = new Artikel[4];
ware[0] = new HandelsArtikel ("Maus", 25.75, 0.2);
ware[1] = new WerkstattArtikel ("Tower", 180, 30, 0.15);
ware[2] = new HandelsArtikel ("Holz", 30, 0.15);
ware[3] = new WerkstattArtikel ("Teppich", 100, 30, 0.15);
for (int i=0;i<=3;i++) {
System.out.println(ware[i].getArtikelnummer());
System.out.println(ware[i].gewinn());
System.out.println(ware[i].getMaterialkosten()); //HIER DAS PROBLEM
Auf die Materialkosten kann nicht zugegriffen werden,
da sie in der abstrakten Oberklasse nicht deklariert worden ist -
muss sie auch nicht, da sie nicht an die andere Klasse vererbt
werden soll! Wie kann ich jetzt trotzdem auf die besagte Klasse
zugreifen ohne sie in der Oberklasse zu deklarien?
}
}
}
DANKE noch mal für die Hilfe

Viele Grüße Kon