# Declarations for Derived Types

A derived-type declaration specifies the properties of objects and functions of derived (user-defined) type.

The derived type must be defined before you can specify objects of that type in a TYPE type declaration.

An object of derived type must not have the PUBLIC attribute if its type is PRIVATE.

A structure constructor specifies values for derived-type objects.

## Examples

The following are examples of derived-type declarations:

      TYPE(EMPLOYEE) CONTRACT
      ...
      TYPE(SETS), DIMENSION(:,:), ALLOCATABLE :: SUBSET_1

The following example shows a public type with private components:

      TYPE LIST_ITEMS
        PRIVATE
        ...
        TYPE(LIST_ITEMS), POINTER :: NEXT, PREVIOUS
      END TYPE LIST_ITEMS

Parent topic: Type Declarations

## See Also

TYPE
Use and host association
PUBLIC
PRIVATE
Structure constructors
Type Declarations for details on the general form and rules for type declarations