1

このクラスがあるとしましょう:

classdef abstractGame
    %UNTITLED Summary of this class goes here
    %   Detailed explanation goes here

    properties
    end

    methods (Abstract, Static)
        run(gambledAmount);
    end

    methods (Static)
        function init()
            gambledAmount = validNumberInput(abstractGame.getGambleString(), 1, 100, 'helpText', 'round');
        end
        function str = getGambleString()
            str = 'How much do you want to gamble?';
        end
    end

end

そして、他のクラスはこのクラスから拡張されます。子クラスで getGambleString メソッドを再定義し、init-method で最も深いクラスが定義するメソッドを使用するようにします (abstractGame.[...] の代わりに、calledClass.[...] のようなものが必要です)。

私はそれをどのように呼ぶべきですか?前もって感謝します。

4

1 に答える 1

1

これはstatic virtual関数の問題です。ただし、そのような構成は C++ にも存在しないため、 matlabで使用する機会はないと思います。(virtual関数定義。)

ところで、matlab では、非静的メソッドは (Java のように) 仮想として動作するため、静的関数を使用しないことを受け入れれば、必要な効果を得ることができます。

証明 (単純化されたコード):

classdef abstractGame
  function str = init(obj)
        str = getGambleString(obj);
    end
    function str = getGambleString(obj)
        str = 'How much do you want to gamble?';
    end
  end
end


 classdef game < abstractGame
  methods 

    function str = getGambleString(obj)
        str = 'Hi!';
    end
  end    
 end


d = game;

d.init()

  ans =

   Hi!
于 2012-11-22T14:48:01.833 に答える