Cómo lograr la herencia de forma efectiva utilizando proto-buffers

Tengo un mensaje de clase base

message Animal {
     optional string name = 1;
     optional int32 age = 2;  
}

y la subclase que se extiende animal

message Dog{
     optional string breed = 1;
}

Así que al crear un mensaje de perro, debería poder configurar todos los campos de Animal. Conozco la forma de hacerlo (declarando una vez más todos los campos de animales en el mensaje del perro), pero ¿es posible usar protobuffers de manera simple y efectiva? También aprendí sobre extensiones y entendí que solo se usa para agregar un nuevo campo al mensaje ya existente y, por lo tanto, no debe interpretarse erróneamente como la solución posible para lograr la herencia.

¿Es posible lograr el diseño simple anterior utilizando las extensiones de protobuffers?

Respuestas a la pregunta(1)

Su respuesta a la pregunta