パブリック手続きfが定義されたタイプAを最初に定義し、これをAに結合することもできます。別のモジュールでは、このタイプをBに拡張しました。しかし、タイプBを使用すると、露出させる。 ところで、私はサブドーム技術を使いたくありません。Fortranでは、拡張定義のときにパブリック・プロシージャをプライベートに設定する方法は?
相補:
は、タイプ(A)が既に定義されていると仮定する:別のモジュールBにおいて
module mA
type::A
...
contains
procedure::f
endtype
endmodule
、我々のようにAを拡張:このモジュールで
module mB
use mA
type,extends(A)::B
...
endtype
endmodule
、F依然としてよいです利用される。ただし、次の、モジュールMCに私が使用
type(B)::Ob
を(宣言)になると私は違法になりたい "()オブ%のFを呼び出します"。あるいは、同等のこととして、私はクラスを拡張するときにいくつかの関数を禁止したい。
サンプルコードを示してください。常にそれをしてください。コードのイラストは、長い説明より常に優れています。 –
考えられる回避策は、子クラスの "f"メソッドに "stop"ステートメントを置くだけかもしれませんか?もう1つの回避策は、継承よりむしろ構成を使用して、Ob%f()が構造によって表示されないようにすることです。 – roygvib