类型程序
为了获得类似行为,类型和相关程序(子程序和函数)应放在一个模块中:
例:
module MShape
    implicit none
    private
    type, public::Shape
    private
        integer::radius
    contains
        procedure::set   => shape_set_radius
        procedure::print => shape_print
    end type Shape
contains
    subroutine shape_set_radius(this, value)
        class(Shape), intent(in out) :: self
        integer, intent(in)          :: value
        self%radius = value
    end subroutine shape_set_radius
    subroutine shape_print(this)
        class(Shape), intent(in) :: self
        print *, 'Shape: r = ', self%radius
    end subroutine shape_print
end module MShape
稍后,在代码中,我们可以使用此 Shape 类,如下所示:
! declare a variable of type Shape
type(Shape) :: shape
! call the type-bound subroutine
call shape%set(10)
call shape%print