Как наследовать указанные c переменные экземпляра в java - PullRequest
0 голосов
/ 03 февраля 2020

Я хочу наследовать указанные c экземпляры от суперкласса, а не все они.

Например:

public class Snake extends Reptile {
    private boolean hasLegs  = false;

    public Snake(double[] legLength, double tailLength, String color, boolean hasScales, boolean hasLegs) {
        super(legLength, tailLength, color, hasScales);
        this.hasLegs = hasLegs;
    }

Я хочу наследовать все переменные экземпляра от класса Reptile кроме double[] legLength (поскольку у змей нет ног).

Как это сделать без изменения кода в классе Рептилий?

Спасибо.

1 Ответ

1 голос
/ 03 февраля 2020

Я думаю, что вы спрашиваете, как не передавать все ненужные параметры родительскому классу. Вы не можете этого сделать, вам нужно передать их все, но это не значит, что вы должны выставить их все в дочернем классе:

public Snake(double tailLength, String color, boolean hasScales) {
    super(null, tailLength, color, hasScales);
    this.hasLegs = false;
}

Вы не можете просто получить некоторые переменные из родитель - вы получите их все. Вы можете установить для них значения, которые имеют смысл для вашего подкласса. Вот и весь смысл!

...