A VARRAY has three states: defined, initialized, or allocated. You define a VARRAY by assigning it a name and a type. You initialize a VARRAY by calling a constructor, which is always the same name as the defined VARRAY datatype. You allocate space implicitly or by calling the EXTEND() method found in the collection API.