【发布时间】:2013-08-31 07:10:07
【问题描述】:
我正在尝试一个简单的 MATLAB 继承示例。
我有 2 个文件 Man.m 和 Worker.m 如下:
classdef Man
properties
salary;
age;
end
methods
function obj=Man(s,a)
obj.salary=s;
obj.age=a;
end
function monthly_salary=FactorBy12(obj)
monthly_salary=obj.salary/12;
end
end
end
和
classdef Worker < Man
properties
years_at_organization;
end
methods
function obj=Worker(y,s,a)
obj.years_at_organization=y;
obj.salary=s;
obj.age=a;
end
function bonus=BonusToBeGiven(obj)
bonus=obj.years_at_organization;
end
end
end
我试图继承Worker 中的所有Man,但它不断向我抛出错误。
Man(5,6) 有效,但 Worker(5,6,7) 无效。 (Input argument "s" is undefined.)
如果我做一些简单的事情
classdef Woman < Man
end
根据this指南是有效的。
我做错了什么?
【问题讨论】:
-
建议:您可能希望通过从
handle继承来使Man类成为句柄类而不是值类:classdef Man < handle
标签: matlab oop inheritance constructor