System Verilog视频学习笔记(9)- Inheritance
OOP-Inheritance(面向对象-继承)
内容来自启芯-System Verilog视频
==============================================================
目录结构:
1、继承
2、多态
3、数据保护
4、总结
==============================================================
本章目标:
了解面向对象派生
Inheritance继承:子类从父类继承,子类又可以定义新的成员和方法。
1、继承
图1、继承结构
以上父类packet,子类继承父类packet,生成mypacket,子类可以定义自己的属性。
派生的类即子类可以兼容父类。
2、多态
图2、函数调用例子
p1.crc = computer_crc();//调用父类computer_crc()函数
p2.crc = computer_crc();//调用子类computer_crc()函数
p1.crc = crc(p1);//调用父类computer_crc()函数
p2.crc = crc(p2);//调用父类computer_crc()函数
以上红色部分为什么调用父类内?因为子类句柄传递给父类,但是packet对象pkt仍是父类对象,他调用的仍是父类的函数。
需要通过Virtual声明。
所以多态需要通过将原函数声明virtual,则新定义的函数可覆盖原有函数。
图3、声明Virtual实现多态
3、数据保护
关键字Local
图4、Local例子(子类不能使用父类的变量)
关键字Protected
图5、Protected例子,子类可访问父类变量
另外:子类继承实现新函数时补全方法的参数,在VCS编译中子类继承父类,子类没有父类对应的函数,则VCS将生成对应的函数但没有参数,所以编译时将会发生错误。
4、总结
本节介绍了类的继承,继承时方法和成员继承,成员属性local和protected。掌握C++真的很重要。