Systemverilog 第九课 面向对象高级编程

第九课 面向对象高级编程

new的时候括号可加可不加,如果有参数列表则必须含有括号。

Polymorphism 多态

当类派生出子类时,基类中的一些方法可能需要被重写,对象中的类型来决定调用方法的实现方式,通常这是一个动态的过程,动态的选择方法的方式叫多态。
虚方法(virtual function)的重写与实现就是多态。
例子:
在这里插入图片描述
实方法和虚方法的区别就在于是否有关键字virtual
注意:基类当中如果定义了virtual,子类当中继承的基类即使不加关键字,也会默认认为是虚类
上述例子中,两边第一次display都是打印“This is class A”,第二次display中实方法打印“class A”,虚方法打印“extended class A”
给实类的句柄赋值以后(my_a = my_ea),这个句柄指向自己内部/基类/父类(my_a本身);给虚类的句柄赋值以后(my_a = my_ea),这个句柄指向的是赋值对象/子类(“my_ea”这个值)
(可以将虚类理解为一种指针或者“壳”,调用的都是指向的对象的属性。)

Casting

在这里插入图片描述
b=e1之后不能用e11=b将b指向的e1再赋给e11(语法会报错),只能使用$cast语句强制转换。(那为什么不直接用e11=e1,或者例化一个e11呢?)
cast分为静态转换和动态转换,静态转换包括数据类型和位宽转换等,动态转换包括枚举等。

其它
  • out of block
    Method不仅可以写在class里面,还可以写在外面。
  • local/protected
    local的作用域在类里面,子类都不能使用local的变量;
    protected在类和子类里面可以用,调用时不可以使用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值