2013-10-09 100 views
2

在下面的一段代碼中,具有私有變量(名稱)和該變量的訪問函數的抽象類型(應該由所有派生類型定義)在模塊:在不同模塊中抽象類型的擴展

module baseTypeModule 

type, abstract :: baseType 
private 
    character(len=maxLengthCompLabel) :: Name = ""   ! Component name 
contains 
    procedure, non_overridable :: getName     ! Access functio to Name (read only) 
end type baseType 

contains 

character(len=100) function getName(this) 
    implicit none 
    class(baseType), intent(in) :: this 
    getName = this % Name 
end function getName 

end module baseTypeModule 

由於有很多其他的變量和函數在每個派生類型,我想在不同的模塊來定義每個派生類型。

Fortran中是否有方法告訴編譯器,我希望只有派生類型的baseType才能夠更改變量Name?

回答

2

編號組件名稱的可訪問性使用與其他模塊實體相同的「按模塊」模型。如果其他派生類型位於不同模塊中,則它們不能訪問組件。

請記住,派生類型實際上並不包含過程 - 它們包含過程的綁定。因此派生類型不能真正「做」任何事情。也可以將一個過程綁定到多種類型。