Aha, takže Java:
public abstract class Spaceship {
private int hull;
private int maxHull;
public Spaceship(int hull, int maxHull) {
if (hull > maxHull) {
throw new IllegalArgumentException();
}
this.hull = hull;
this.maxHull = maxHull;
}
public int getHull() {
return hull;
}
public int setHull(int hull) {
this.hull = hull < maxHull ? hull : maxHull;
}
...
}
Metóda setHull a konštruktor sú trochu nekonzistentné, pretože v jednej sa vyhadzuje výnimka a v druhej sa potichu nastaví maximálna hodnota. Mal by si si vybrať jednu možnosť a tú dodržiavať.public class Viper extends Fighter {
private String name;
public Viper() {
this("Viper");
}
public Viper(String name) {
this(name, 12);
}
public Viper(String name, int hull) {
super(hull, 15)
setName(name);
}
...
}
Konštantu STANDART_HULL som úplne vyhodil, lebo sa mi nezdá, že by si si ju potreboval niekde pamätať. Ale môžeš si ju tam samozrejme pridať.