Fortran 抽象派生类型

示例

可扩展的派生类型可能是抽象的

type, abstract :: base_type
end type

这样的派生类型可能永远不会实例化,例如通过

type(base_type) t1
allocate(type(base_type) :: t2)

但是多态对象可能将此作为其声明的类型

class(base_type), allocatable :: t1

要么

function f(t1)
  class(base_type) t1
end function

抽象类型可能具有组件和类型绑定过程

type, abstract :: base_type
  integer i
contains
  procedure func
  procedure(func_iface), deferred :: def_func
end type

该过程def_func是带有interface的延迟类型绑定过程func_iface。这种延迟类型绑定过程必须由每种扩展类型实现。