构造函数无法访问自己类的私有属性?

时间:2015-04-18 18:54:11

标签: matlab oop properties constructor

我试图写一个创建整体对象的类。但是,构造函数无法正常工作。当GetAccess设置为private或protected时,它无法将integral.value设置为正确的值。只有当GetAccess设置为public时,它才有效。为什么??

这是代码。

classdef nintegral
    properties(GetAccess=private, SetAccess=private)
       value
    end

    methods
       function v = nintegral(j) %class constructor
         if isa(j,'pf')==0
            disp('Function object is not a piecewise function')

         else
            v.value = integral(@(x) j.p1(1)*x.^2 + j.p1(2)*x + j.p1(3),j.r1(1),j.r1(2)) + integral(@(x) j.p2(1)*x.^2 + j.p2(2)*x + j.p2(3),j.r2(1),j.r2(2));
        end

    end

end

这是pf类。

 classdef pf
  properties(GetAccess=public,SetAccess=private)
    r1=[-1,0]; %range 1
    r2=[0,1]; %range 2
    p1=[1,1,1]; %polynomial 1
    p2=[1,1,1];  %polynomial 2       
  end

methods
    function j=pf(r1,p1,r2,p2) % class constructor
        if r1(2)>r2(1)
            disp('ERROR FUNCTION DEFINITION: Overlaping range')

        else
            j.r1=r1;
            j.r2=r2;
            j.p1=p1;
            j.p2=p2;
        end

    end

    function v=eval(j,x)
        if x<j.r1(1) | x>j.r2(2)
            disp('Error: Out of Range')
        else
            if x>j.r1(1) & x<=j.r1(2)
                v=polyval(j.p1,x);
            else
                v=polyval(j.p2,x);
            end

        end

    end

end

0 个答案:

没有答案