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
    评论
Matlab中的继承是通过创建一个新的,并从现有的派生出来实现的。派生可以继承的属性和方法,并且还可以添加自己的属性和方法。 要定义一个派生,可以使用`classdef`关键字。下面是一个简单的示例,演示了如何创建一个派生: ```matlab classdef ChildClass < ParentClass % ChildClass 是 ParentClass 的派生 properties % 添加子的属性 childProperty end methods % 添加子的方法 function obj = ChildClass(arg1, arg2) % 子的构造函数 obj@ParentClass(arg1, arg2); % 调用父的构造函数 % 初始化子的属性 obj.childProperty = 0; end function childMethod(obj) % 子的方法 % 这里可以使用父的方法和属性 obj.parentMethod(); disp('Child method called'); end end end ``` 在上面的例子中,`ChildClass`是从`ParentClass`派生出来的子。子中添加了一个名为`childProperty`的新属性,并且定义了一个名为`childMethod`的新方法。构造函数`ChildClass`调用了父`ParentClass`的构造函数,并初始化了子的属性。 通过继承,子可以使用父的属性和方法,并且还可以添加自己的特定功能。在子中,可以通过调用`obj@ParentClass`来访问父的方法和属性。 使用派生时,可以实例化子对象并调用其方法,例如: ```matlab obj = ChildClass(arg1, arg2); % 创建子对象 obj.childMethod(); % 调用子的方法 ``` 这样,派生就能够继承的特性,并且还可以进行个性化的扩展和修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值