Oop 在SystemVerilog中,虚拟类和抽象类相同吗?
请帮助我了解SystemVerilog中虚拟类的需求。Oop 在SystemVerilog中,虚拟类和抽象类相同吗?,oop,system-verilog,verification,Oop,System Verilog,Verification,请帮助我了解SystemVerilog中虚拟类的需求。 对于抽象类,我们可以使用SystemVerilog中的接口。这两者有什么区别 是的,SystemVerilog中的抽象类与虚拟类相同。java使用关键字“抽象”,但是C++等其他语言没有特定的关键字。SystemVerilog重新使用关键字virtual,以便不保留其他关键字。抽象类只是一个构造函数受保护的类,您不能直接构造它,必须首先扩展该类,然后才能构造派生对象。 抽象类允许使用另一个概念,即纯虚拟方法。这些是必须在扩展类中重写的方法
- 对于抽象类,我们可以使用SystemVerilog中的接口。这两者有什么区别
virtual
,以便不保留其他关键字。抽象类只是一个构造函数受保护的类,您不能直接构造它,必须首先扩展该类,然后才能构造派生对象。
抽象类允许使用另一个概念,即纯虚拟方法。这些是必须在扩展类中重写的方法。像UVM这样的基类库充满了抽象类,并且具有必须重写的方法,如复制或打印方法。
仅包含纯虚拟方法的抽象类称为
接口类
,您可以定义一个实现多个接口类的接口类。这几年有很多关于这个话题的论文 是的,SystemVerilog中的抽象类与虚拟类相同。java使用关键字“抽象”,但是C++等其他语言没有特定的关键字。SystemVerilog重新使用关键字virtual
,以便不保留其他关键字。抽象类只是一个构造函数受保护的类,您不能直接构造它,必须首先扩展该类,然后才能构造派生对象。
抽象类允许使用另一个概念,即纯虚拟方法。这些是必须在扩展类中重写的方法。像UVM这样的基类库充满了抽象类,并且具有必须重写的方法,如复制或打印方法。
仅包含纯虚拟方法的抽象类称为
接口类
,您可以定义一个实现多个接口类的接口类。这几年有很多关于这个话题的论文 感谢@dave_59解释并提供这些论文的链接。@dave_59我要小心地说,构造函数是受保护的,正因为如此,您无法直接构造它。这稍微意味着您可以从类的另一个函数调用构造函数(例如,与singleton模式类似)。具有受保护构造函数的类不是抽象类。是的-受保护构造函数是一个不完美的类比库@dave_59,用于解释和提供这些论文的链接。@dave_59我要小心地说,构造函数是受保护的,正因为如此,你不能直接构造它。这稍微意味着您可以从类的另一个函数调用构造函数(例如,与singleton模式类似)。具有受保护构造函数的类不是抽象类。是的-受保护构造函数是一个不完美的类比