Hallo liebe Forengemeinde
Derzeit bin ich dabei mir Java beizubringen und bin bei einer Aufgabe auf ein Problem gestoßen bei dem ich ein paar grundlegende Fragen habe.
Es gibt zwei Klassen, eine grundlegende Klasse (Product) ist abstrakt, die andere (Pen) ist eine "normale" Klasse. Darüberhinaus gibt es noch ein Enum, welches die aktuelle Währung (Currency) für das jeweilige Produkt festlegt:
Abstrakte Klasse Product:
Klasse Pen:
Enum Currency:
Meine Problem: Ich möchte die Attribute für die Produkte möglichst in der abstrakten Klasse Product lassen und mit der Klasse Pen und dem entsprechendem Konstruktor diese Attribute übergeben. Dabei bin ich auf das Problem gestoßen, dass ich diese wegen mangelnder Sichtbarkeit in der Klasse Pen nicht deklarieren und per super() an die abstrakte Klasse Product übergeben kann.
Mit einer set-Methode kann ich das machen, wobei ich mir irgendwie nicht vorstellen kann, dass das besonders sinnvoll ist.
Soll ich diese Attribute direkt in der Kindklasse deklarieren?
Ich frage mich einfach welche Vorgehensweise hier sozusagen üblich und sinnvoll ist.
Ich hoffe mein Problem kommt halbwegs verständlich rüber...
Derzeit bin ich dabei mir Java beizubringen und bin bei einer Aufgabe auf ein Problem gestoßen bei dem ich ein paar grundlegende Fragen habe.
Es gibt zwei Klassen, eine grundlegende Klasse (Product) ist abstrakt, die andere (Pen) ist eine "normale" Klasse. Darüberhinaus gibt es noch ein Enum, welches die aktuelle Währung (Currency) für das jeweilige Produkt festlegt:
Abstrakte Klasse Product:
Java:
public abstract class Product {
//attributes
private double price;
private String name;
private Currency currency;
//constructor
Product(double price, String name, Currency currency) {
this.price = price;
this.name = name;
this.currency = currency;
}
//get-set-methods
public void setPrice(double price) {
this.price = price;
}
//methods
public abstract void buyProduct();
}
Klasse Pen:
Java:
public class Pen extends Product{
//constructor
Pen(double price, String name, Currency currency) {
super (price, name, currency);
setPrice(1.22);
}
//methods
public void buyProduct() {
}
}
Enum Currency:
Java:
public enum Currency {
EURO, DOLLAR, YEN;
}
Meine Problem: Ich möchte die Attribute für die Produkte möglichst in der abstrakten Klasse Product lassen und mit der Klasse Pen und dem entsprechendem Konstruktor diese Attribute übergeben. Dabei bin ich auf das Problem gestoßen, dass ich diese wegen mangelnder Sichtbarkeit in der Klasse Pen nicht deklarieren und per super() an die abstrakte Klasse Product übergeben kann.
Mit einer set-Methode kann ich das machen, wobei ich mir irgendwie nicht vorstellen kann, dass das besonders sinnvoll ist.
Soll ich diese Attribute direkt in der Kindklasse deklarieren?
Ich frage mich einfach welche Vorgehensweise hier sozusagen üblich und sinnvoll ist.
Ich hoffe mein Problem kommt halbwegs verständlich rüber...