[已解决] 请教为何 get 方法不能读取private属性成员

[复制链接]
forwei618 发表于 2022-1-18 18:20:54
我建立了一个 Point2D 类,代码如下:
classdef Point2D < handle
    properties(Access=private)
        x
        y
    end
    methods
        function val=get.x(obj)
            disp('in val=x.get(obj)');
            val=obj.x;
        end
        function obj=Point2D(cv)
            obj.x=real(cv);
            obj.y=imag(cv);
        end
    end
end

在主程序中新建Point2D类对象,
p1=Point2D(1+1j)

执行语句 p1.x,理应进入到 get.x 方法中,但matlab报错:
类 'Point2D' 没有公共属性 'x'。
出错 tmpOOP (line 4)
p1.x

若把属性成员的特性 Access=private 删掉,则代码正常运行,但这不是我的本意。
我本希望隐藏属性成员,只通过公开的get 方法成员读取数据。



最佳答案


1119093102 发表于 2022-1-19 09:34:17
你这不是矛盾了吗?私有肯定只能自己用,你能get肯定能给别人用,私有属性只有在类内使用,类 'Point2D' 没有公共属性 'x'。都说了,get出来的是公共属性
回复此楼

1 条回复


1119093102 发表于 2022-1-19 09:34:17
你这不是矛盾了吗?私有肯定只能自己用,你能get肯定能给别人用,私有属性只有在类内使用,类 'Point2D' 没有公共属性 'x'。都说了,get出来的是公共属性
回复此楼
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表