First of all, terminology: this is โAdaโ, not โADAโ - it is named after โAda Lovelaceโ; it is not an abbreviation.
The subtype is compatible with its base type, so you can mix the operands of the base type with the operands of the base type. For instance:
subtype Week_Days is Integer range 1..7;
Since this is a subtype, you can (for example) add 1 on a weekday to get the next business day.
A derived type is a completely separate type that has the same characteristics as its base type. You cannot mix operands of a derived type with operands of a base type. If, for example, you used:
type Week_Day is new Integer range 1..7;
Then you cannot add an integer on a weekday to get another weekday. To manipulate a derived type, you usually define these manipulations yourself (for example, create a package). At the same time, the derived type "inherits" all the operations of its base type (even some of them may not make sense), so you still get the addition.
source share