2015-11-15 36 views
0

下面的代碼的輸出是 -systemverilog-多態性

這是A類

這是A類

但根據我輸出應爲─

這是類一個

這是擴展的類

因爲,在打印第一行後,我們將類型EA的對象分配給類型爲A的對象

EA my_a = my_ea;

然後當我們做 - my_a.disp();

應該打印這是擴展的類

請告訴我是否正確與否?

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

爲什麼這裏的java標籤? –

回答

3

您需要聲明的任務,因爲虛擬:

class A ; //class A 
    virtual task disp(); 
    $display(" This is class A "); 
    endtask 
endclass 
+0

好的。但是爲什麼它不打印 - 現在是擴展類A?正如我將類型EA的對象分配給類型A的對象一樣。 – Akash

+0

我在此執行時打印出「This is Extended class A」:http://www.edaplayground.com/x/WcN – Hida