关于oop:调用matlab中的实际类

Calling the actual class in Matlab

假设我有这门课:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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方法使用最深的类定义(而不是abstractGame。…]我希望类似calledClass。…])。

我该怎么称呼它?事先谢谢。


这是一个EDCOX1的0个函数问题,但是这样的构造即使在C++中也不存在,那么我认为在Matlab中没有机会拥有它。(virtual函数定义)

顺便说一下,在Matlab中,非静态方法表现为虚拟的(如Java),因此,如果您不接受静态函数,则可以获得所需的效果。

证明(简化代码):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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!