# Type Parameter Order for Parameterized Derived Types

The type parameter order of a non-extended type is the order of the type parameter list in the derived type definition. The type parameter order of an extended type consists of the order of its parent type followed by the order of the type parameter list in the derived type definition.

A type parameter declared in an extended type must not have the same name as any accessible component or type parameter of its parent type.

## Examples

Consider the following:

    Type :: t1 (k1,k2)
      Integer, kind :: k1,k2
      Real(k1) ::  a(k2)
    End type

    Type, extends (t1) :: t2(k3)
      Integer, kind :: k3
      Logical(k3) flag
    End type

The type parameter order for type `t1` is `k1`, then `k2`.

The type parameter order for type `t2` is `k1`, then `k2`, then `k3`.

Parent topic: Parameterized TYPE Statements

## See Also

Parameterized Derived-Type Declarations
Parameterized TYPE Statements