8.3.1 Overriding Indicators
An
overriding_indicator
is used to declare that an operation is intended to override (or not
override) an inherited operation.
Syntax
overriding_indicator ::= [
not]
overriding
Legality Rules
the operation shall be a primitive operation for
some type;
if the
overriding_indicator
is
overriding, then the operation shall override a homograph at
the place of the declaration or body;
if the
overriding_indicator
is
not overriding, then the operation shall not override any homograph
(at any place).
In addition to the places where
Legality Rules normally apply, these rules also apply in the private
part of an instance of a generic unit.
Examples
Example of use of
an overriding indicator when declaring a security queue derived from
the Queue interface of 3.9.4:
type Security_Queue is new Queue with record ...;
overriding
procedure Append(Q : in out Security_Queue; Person : in Person_Name);
overriding
procedure Remove_First(Q : in out Security_Queue; Person : out Person_Name);
overriding
function Cur_Count(Q : in Security_Queue) return Natural;
overriding
function Max_Count(Q : in Security_Queue) return Natural;
not overriding
procedure Arrest(Q : in out Security_Queue; Person : in Person_Name);
The first four subprogram declarations guarantee
that these subprograms will override the four subprograms inherited from
the Queue interface. A misspelling in one of these subprograms will be
detected at compile time by the implementation. Conversely, the declaration
of Arrest guarantees that this is a new operation.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe