Я думаю, что вы спрашиваете, как не передавать все ненужные параметры родительскому классу. Вы не можете этого сделать, вам нужно передать их все, но это не значит, что вы должны выставить их все в дочернем классе:
public Snake(double tailLength, String color, boolean hasScales) {
super(null, tailLength, color, hasScales);
this.hasLegs = false;
}
Вы не можете просто получить некоторые переменные из родитель - вы получите их все. Вы можете установить для них значения, которые имеют смысл для вашего подкласса. Вот и весь смысл!