2013-03-07 85 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

    相关问题