Por que ele armazena ou aloca memória para variáveis de superclasse, no objeto de subclasse?

No código a seguir

class Mammal {
  String name = "furry ";
  String makeNoise() { 
    return "generic noise";
 }
}

class Zebra extends Mammal {
    String name = "stripes ";
    String makeNoise() { 
        return "bray"; 
    }
}

public class ZooKeeper {
    public static void main(String[] args) { 
       new ZooKeeper().go();
   }

   void go() {
      Mammal m = new Zebra();
      System.out.println(m.name + m.makeNoise());

      Zebra z = new Zebra();
      System.out.println(z.name + z.makeNoise());
   }
}

Ambos os objetos (m ez), se eu vir nas janelas de depuração do eclipse, conter os dois valores dename variável (furry estripes)

Entendo que no polimorfismo, o método genérico de superclasse também pode ser usado por subclasses. Mas por que o objeto subclasse também armazena valores de variáveis de superclasse, mesmo em caso de ocultação. Existe algum uso disso?

questionAnswers(1)

yourAnswerToTheQuestion