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.
private_extension_declaration ::= type defining_identifier [discriminant_part] is [abstract] [limited | synchronized] new ancestor_subtype_indication [and interface_list] with private;
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;
Créditos