EDA365电子论坛网
标题:
请问有谁知道如何实现子类转基类?
[打印本页]
作者:
limopcb
时间:
2020-4-14 14:50
标题:
请问有谁知道如何实现子类转基类?
请问有谁知道如何实现子类转基类?
. N1 ^ s" c/ Z. t8 j
类的定义如下:
: c8 P/ V* c4 B9 b# F/ R
<div>% Matlab 2018B</div><div>classdef (Abstract) baseclass < handle
</div> methods
run(obj);
end
end
classdef derived1 < baseclass
methods
function obj = derived1()
end
function run(obj)
disp('derived1');
end
end
end
classdef derived2 < baseclass
methods
function obj = derived2()
end
function run(obj)
disp('derived2');
end
end
end
) }3 j7 @- M9 s# }: P, y9 P+ j# q# g
2 W3 d$ ~% U# B2 d& t
/ _7 L, k+ H7 L* ^* U8 z" f" _
4 C, u4 V9 n3 o: I
我试图把几个子类对象拼成一个基类类型的向量,不成功。
/ O% ~/ \% s- F% E* M
错误提示:
$ A) T* F( N2 k9 F
>> [derived1() derived2()]
- i7 l) `* F8 a" }+ o( ^
错误使用 horzcat
9 u6 G' ]5 _; A2 m( m+ g
从 derived2 转换为 derived1 时出现以下错误:
; S$ J) U# J5 P- @
输入参数太多。
( r: N* K/ k; T" B) Y; x; `
5 i6 a( W4 p% d: l2 x, d$ `
>> baseclass(derived1())
+ M! R( T$ F' k3 x6 b
错误使用 baseclass
1 L: |7 a) }' H) b
输入参数太多。
4 j7 L- p$ g. v1 X! F
( i( K" G. m: E$ ~% l. ^
- r4 m |! {$ i6 @, j4 w* G0 f$ n
使用系统自带的line scatter等类去做相同操作是成功的,能够得到基类graphics 的对象数组。
- @7 u: U* c1 N& g- t2 F$ Z0 x$ ^
>> hold all;[plot([1 2 3 4 5]),scatter([1 2 3 4 5],[2 3 4 5 6])]
( [, u- {7 ? x+ Y- Z
ans =
6 D0 r! c. E: f X- B
1×2 graphics 数组:
7 N( ~3 X7 p a
Line Scatter
3 {$ d. b3 N6 @, J. _" q
请问能否实现与此类似的效果,把几个子类对象拼成一个基类类型的向量?需要如何修改?
( n; W2 {8 P( Z* Z! y! }# T. q
作者:
Colbie
时间:
2020-4-14 17:57
F' O2 e) l! R9 R! s6 R; g8 C
试试把第一行 classdef (Abstract) baseclass < handle 改为
7 s7 R% @8 n+ y+ p
classdef (Abstract) baseclass < handle&matlab.mixin.Heterogeneous
- K D7 B5 J" a j0 W# H9 M
- `7 k/ M& ]7 J Y# M
即可正常工作。
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2