2016-06-07 58 views

回答

1

是的,SystemVerilog中的抽象類與虛擬類相同。 Java使用關鍵字'abstract',但其他語言(如C++)沒有特定的關鍵字。 SystemVerilog重新使用關鍵字virtual以免保留其他關鍵字。抽象類只是一個構造函數受保護而不能直接構造的類,您必須首先擴展該類,然後才能構造派生對象。 抽象類允許另一個概念是純粹的虛擬方法。這些是必須在擴展類中重寫的方法。像UVM這樣的基類庫充滿了抽象類,並且擁有必須重寫的方法,如複製或打印方法。 僅包含純虛擬方法的抽象類稱爲interface class,您可以定義實現多個接口類的接口類。這一年DVCon有許多關於這個話題的論文。

+0

謝謝@ dave_59解釋並給出這些論文的鏈接。 – AnuragChauhan

+1

@ dave_59我會小心的說,構造函數是受保護的,正因爲如此,你不能直接構造它。這稍微暗示你可以從另一個類的函數中調用構造函數(例如,像在單例模式中那樣)。具有受保護構造函數的類不包含抽象類。 –

+0

是的 - 一個受保護的構造函數是一個不完美的類比 –