为了获得类的行为,必须在模块中放置类型和相关过程(子例程和函数):
例:
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