2017-11-30 9 views
0

Beginnen wir mit Code zum ersten Mal startenSubklassen Konstruktor ohne einen Parameter - ist das möglich? Wie geht das?

Das ist mein Super

public class Burger { 

protected String name; 
protected MeatType meat; 
protected BreadType bread; 
private double basePrice; 
private EnumMap<Addition, Integer> additions; 

public Burger(String name, MeatType meat, BreadType bread){ 
    this.name = name; 
    this.meat = meat; 
    this.bread = bread; 
    this.basePrice = 3.00; 
    this.additions = new EnumMap<Addition, Integer>(Addition.class); 
} 

und dies die Unterklasse von ihr

public class FitBurger extends Burger { 

public FitBurger(String name, MeatType meat, BreadType bread){ 
    super(name,meat,bread); 
    } 

} 

jedoch erbt, ich will nicht meine Unterklasse einen Konstruktor haben mit dem BreadType-Brot, aber immer noch will ich es behalten die Variable und setzen Sie es auf einen bestimmten Wert. Ich möchte, dass die Superklasse so bleibt wie sie ist.

Kann man das auf irgendeine Weise erreichen?

+0

Rufen 'Super (Name, Fleisch, BreadType.WHATEVER)', und entfernen Sie den Parameter Standard verwenden. –

+0

Sie müssen 'super' mit gültigen Werten für diese drei Parameter aufrufen. Wie viele Parameter Sie im Unterklassenkonstruktor haben, ist irrelevant. –

Antwort

0

aber ich möchte immer noch die Variable erben und sie auf einen bestimmten Wert setzen. Ich möchte, dass die Superklasse so bleibt wie sie ist. Ist es möglich, dies auf irgendeine Weise zu erreichen?

Ja. Sie können eine Konstante an den super() Aufruf übergeben. Wie,

public FitBurger(String name, MeatType meat){ 
    super(name,meat,RYE_BREAD_CONSTANT); 
} 
+0

ahh natürlich! Wie könnte ich vergessen, das Brot im Aufruf von super() als Konstante vorzudefinieren? Danke vielmals! – bwielk

0

Sie müssen den BreadType aus dem FitBurger-Konstruktor entfernen, aber einen Wert in den Superaufruf übergeben.

public class FitBurger extends Burger { 

    public FitBurger(String name, MeatType meat){ 
     super(name,meat,BreadType.Bun); 
    } 

} 
0
public FitBurger(String name, MeatType meat){ 
    super(name,meat,null); 
} 

Fügen Sie diesen neuen Konstruktor Ihre FitBurger Klasse oder die bestehende ersetzen.

0

Lassen Sie die BreadType Brot Parameter aus der Unterklasse Konstruktor, und verwenden Sie super(name,meat, null) oder was auch immer Sie wollen, wie Sie BreadType

Verwandte Themen