私有
用途
PRIVATE 属性指定无法通过使用关联在模块外部访问模块实体。
语法
规则
PRIVATE 属性只能显示在模块的作用域中。
虽然模块中可能出现多个 PRIVATE 语句,但只能包含一个省略 access_id_list的语句。 没有 access_id_list 的 PRIVATE 语句为模块中所有可能可访问的实体设置专用的缺省辅助功能选项。 如果模块包含此类语句,那么它不得包含没有 access_id_list的 PUBLIC 语句。 如果模块不包含没有 access_id_list的 PRIVATE 语句,那么缺省辅助功能选项为 public。 未显式指定辅助功能选项的实体具有缺省可访问性。
具有公共标识的过程可通过该标识进行访问,即使其特定标识是专用标识也是如此。 如果模块过程包含类型具有专用可访问性的私有哑参数或函数结果,则必须将模块过程声明为具有专用可访问性,并且不得具有具有公共可访问性的通用标识符。 派生类型的可访问性不影响其组件或过程的可访问性,也不受其影响。
如果名称列表组包含任何专用的对象或包含专用组件,那么名称组列表必须是专用的。 如果子程序的任何参数都是专用的派生类型,那么该子程序必须是专用的。 如果函数的结果变量是专用派生类型,那么该函数必须是专用函数。
示例
MODULE MC
PUBLIC ! Default accessibility declared as public
INTERFACE GEN
MODULE PROCEDURE SUB1, SUB2
END INTERFACE
PRIVATE SUB1 ! SUB1 declared as private
CONTAINS
SUBROUTINE SUB1(I)
INTEGER I
I = I + 1
END SUBROUTINE SUB1
SUBROUTINE SUB2(I,J)
I = I + J
END SUBROUTINE
END MODULE MC
PROGRAM ABC
USE MC
K = 5
CALL GEN(K) ! SUB1 referenced because GEN has public
! accessibility and appropriate argument
! is passed
CALL SUB2(K,4)
PRINT *, K ! Value printed is 10
END PROGRAM

