2013-03-07 125 views
0

例如: 我有兩個這樣的班級: 在B級評論裏面找一個問題,向下。MATLAB OOP,我可以調用調用類的方法嗎?

classdef A < handle 
    properties 
     classBobj; % class B is a property of class A 
    end 

    methods 
     MethodFromA (obj) 
     end 
    end 
end 

classdef B <handle 
    methods 
     MethodFromB (obj) 
      % I is possible to call class A method MethodFromA here 
     end 
    end 
end 
+0

你能澄清你的問題?你遇到的錯誤是什麼?此外,類def是無效的matlab代碼。 – bdecaf 2013-03-07 10:17:04

+0

你是什麼意思? http://www.mathworks.com/help/matlab/ref/classdef.html 我只是想從類B中調用類A中定義的方法。類B是類A的屬性。就像在上面的示例代碼。 – Vladimir 2013-03-07 10:29:48

+0

顯然,你可以運行'objectA.MethodFromA()'。試着給一個簡單的工作例子(目前不是),那麼我們可以討論這個問題。 – bdecaf 2013-03-07 10:52:21

回答

1

有兩種方式,這是可能的:

  1. 您嘗試調用從A類的靜態方法,但那麼你必須將它定義爲這樣的:

    classdef A < handle 
    
        properties 
         classBobj; % class B is a property of class A 
        end 
    
        methods (Static) 
         MethodFromA() 
        end 
    
    end 
    

這可以在您的代碼中隨處調用(不參考A的實例)如下A.MethodFromA()

  • 你有你的中A類的實例的引用,因此而不是調用MethodFromB(obj),你都應該MethodFromB(obj, classAobj)
  • +0

    這是行不通的,因爲我想方法 'MethodFromA()' 實際上訪問從A創建的對象。 – Vladimir 2013-03-07 08:53:42

    +0

    Matlab不具有內部類的功能。如果你想訪問從A創建的對象,那麼你需要至少有一個對它的引用。 – Nick 2013-03-07 09:20:03

    +0

    是否可以創建一個MethodFromA()的全局引用? – Vladimir 2013-03-07 10:27:06