A.4. Abstract types and Interfaces - JulTob/Ada GitHub Wiki
package P is
type T is abstract tagged private;
procedure Method (Self : T) is abstract;
private
type T is abstract tagged record
F1, F2 : Integer;
end record;
end p;
type Root is tagged record
F1 : Integer;
end record;
procedure M1 (Self : Root);
type I1 is interface;
procedure M2 (Self : I1) is abstract;
type I2 is interface;
procedure M3 (Self : I2) is abstract;
type Child is new Root and I1 and I2 with record
F2 : Integer;
end record;
-- M1 implicitly inherited by Child
procedure M2 (Self : Child);
procedure M3 (Self : Child);