Vererbung Feuerwerksartikel

schokoschobii

Neues Mitglied
Hi,
ich bin neu hier und hab gerade zwei kleine Probleme, bei dem ich nicht weiterkomme.
Also zunächst einmal der Quellcode:
Java:
public class Artikel
{
    static final boolean netto = true;
    static final boolean brutto = false;
    private String bezeichnung;
    private int preis;
    private int brenndauer;
    private int preis_euro;
    private int preis_cent;
    Artikel(String bezeichnung, int preis, int brenndauer)
    {
        this.bezeichnung = bezeichnung;
        this.preis = preis;
        this.brenndauer = brenndauer;
        if(preis >= 0)
        {
            preis_euro = preis / 100;
            preis_cent = preis % 100;
        }
    }

Das wäre der erste Teil der Oberklasse. Die Methoden funktionieren ja alle.
Nun zu meinen Problemen. Ich habe zwei Unterklassen geschrieben(Batterie und Boeller).
Bei der ersteren funktioniert alles und der Compiler meckert auch nicht.
Aber bei der Subklasse Boeller will er nicht.


Java:
class Boeller extends Artikel
{
    Boeller(String bezeichnung, int preis)
    {
        super(bezeichnung, preis, brenndauer);
    }

1.Problem: error: brenndauer has private acces in Artikel
(damit meint er die brenndauer aus dem Konstruktor der Oberklasse, was ich nicht verstehe, weil bei der Subklasse Batterie gibt es da keinerlei Probleme)
2.Problem: Ich möchte die Brenndauer von dem Boeller auf 1 setzen und weiß nicht wie ich das umsetzen soll.

Hier die Aufgabenstellung:
Deklarieren Sie nun noch eine Subklasse “Boeller” von Artikel für Knallkörper. Diese hat keine
zusätzlichen Attribute, und die Dauer ist immer 1 (ein Knall ist ja sehr kurz).
 Definieren Sie einen Konstruktor, der nur Bezeichnung und Preis als Parameter nimmt. Die
Dauer soll automatisch auf 1 gesetzt werden.


Ich bedanke mich schonmal für eure Tips!:toll:
 
N

nillehammer

Gast
Java:
class Boeller extends Artikel
{
    // Die Brenndauer 1 ist eine gemeinsame konstante Eigenschaft aller Böller.
    // also private static final
    private static final int BOELLER_BRENNDAUER = 1;

    Boeller(String bezeichnung, int preis)
    {
        // Hier rufen wir super mit BOELLER_BRENNDAUER
        // auf. Dadurch erhalten ALLE Instanzen von Boeller
        // die gleiche Brenndauer (1).
        super(bezeichnung, preis, BOELLER_BRENNDAUER);
    }
    ...
}
 

Neue Themen


Oben