以下代码的输出是 -
这是A级
这是A级
但据我说,输出应该是 -
这是A级
这是扩展类A
因为在打印第一行之后,我们将EA类型的对象分配给类型为A的对象 -
EA my_a = my_ea;
然后当我们这样做时 - my_a.disp();
它应该打印 - 这是扩展类A
请告诉我是否正确?
class A ; //class A
task disp ();
$display(" This is class A ");
endtask
endclass
class EA extends A ; //subclass EA
task disp ();
$display(" This is Extended class A ");
endtask
endclass
program main ;
EA my_ea;
A my_a;
initial
begin
my_a = new();
my_a.disp();
my_ea = new();
my_a = my_ea;
my_a.disp();
end
endprogram
答案 0 :(得分:3)
您需要将任务声明为虚拟:
class A ; //class A
virtual task disp ();
$display(" This is class A ");
endtask
endclass