1.2.P Private Packages - JulTob/Ada GitHub Wiki

Una extensión de declaración privada declara una extensión de un tipo tagged. El tipo extendido puede añadir nuevos campos, siempre que no se denominen igual que los de sus ancestros. Si el tipo derivado se declara en el mismo paquete que su padre o en un paquete derivado de aquel, tiene total acceso a los campos de su padre; si se declara en un paquete diferente, sólo tiene el acceso que proporcionen las operaciones primitivas de su padre.

Un tipo extendido no tiene por qué añadir ningún campo.

package Ejemplo is
   type Persona is tagged private; -- Declaración de tipo privado
   type Empleado is new Persona with private; -- Extensión

private
   type Persona is tagged record
      Nombre : String (1 .. 50);
      NIF : String (1 .. 9);
   end record;

   type Empleado is new Persona with record
      Seguridad_Social : String (1 .. 10);
   end record;
end Ejemplo;

Tipo derivado que no añade ningún campo:

type T2 is new T with null record;