matlab类的继承

1.定义一个Superclass类

classdef Superclass

properties
    prop1
    prop2
end

methods 
    function obj = Superclass(val1, val2)

        if nargin == 2
            obj.prop1 = val1;
            obj.prop2 = val2;
        end
        
    end
end
    
end

2.定义一个MySubclass类,从Superclass类继承

classdef MySubclass < Superclass

properties 
    prop3
end
    
methods 

    function obj = MySubclass(val1,val2,val3)
        
        if nargin ~= 3
            prop1 = []
            prop2 = []
            prop3 = []
        end
        obj@Superclass(val1, val2);
        obj.prop3 = val3;

    end

end
end

注意这里**obj@Superclass(val1, val2)**语句的含义
3.定义一个Rectangle类

classdef Rectangle

	properties
		len = 0;
		width = 0;
	end

	methods
	
		function obj = Rectangle(l,w)
			if nargin == 2
				obj.len = l;
				obj.width = w;
			end
		end
		
		function outarg = rectarea(obj)
			outarg = obj.len*obj.width;
		end
		
		function out = lt(obj1, obj2)
			out = lt(rectarea(obj1), rectarea(obj2));
		end

		function out = gt(obj1, obj2)
			
			if isa(obj2, 'Rectangle')
				out = gt(rectarea(obj1), rectarea(obj2));
			else
				% 1.out = gt(rectarea(obj1), 20);
				inp2 = Rectangle(obj2, 1);
				out = get(obj1, inp2);
            end
        end
		
		function disp(obj)
			fprintf('The rectangle has length %.2f and withd %.2f. \n', obj.len, obj. width);
		end
	end

end

4.定义一个Box类,从Rectangle类继承

classdef Box < Rectangle
    %UNTITLED18 此处显示有关此类的摘要
    %   此处显示详细说明
    
    properties
        height=0;
    end
    
    methods
        function obj = Box(l, w, h)
            obj@Rectangle(l, w);
            obj.height =h;
        end
        
        % Rectangle methods也被继承
        function out = calvol(obj)
            out = obj.rectarea*obj.height;
        end
        
        function disp(obj)
            fprintf('The box has length %.2f, withd %.2f and height %.2f. \n', obj.len, obj. width, obj.height);
        end
        
    end
end

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值