博客
关于我
#C8# UVM中的factory机制 #S8.1.2# 到底重载?多态?
阅读量:790 次
发布时间:2023-01-23

本文共 1159 字,大约阅读时间需要 3 分钟。

一 Problem来源

在阅读张强老师所著书籍时,关于多态和重载一词反复出现,引发了我们鲜明的疑问:书中到底是在区分“多态”还是“重载”?

为了解答这个问题,我们需要结合实际案例来分析。以书中的一个示例为例:

在文件src/ch8/section8.1/8.1.1/my_case0.sv中:

class bird extends uvm_object;  virtual function void hungry();    $display("I am a bird, I am hungry");  endfunction  function void hungry2();    $display("I am a bird, I am hungry2");  endfunctionendclass
class parrot extends bird;  virtual function void hungry();    $display("I am a parrot, I am hungry");  endfunction  function void hungry2();    $display("I am a parrot, I am hungry2");  endfunctionendclass

从代码中可以观察到,bird类中定义了两个函数hungry()hungry2(),而parrot类继承自bird,并重新定义了这两个函数。尽管parrotbird的子类,但由于virtual关键字的使用,parrot可以重新定义bird中的虚函数。

###疑问点

  • 多态与重载的定义:在面向对象编程中,多态是指一个对象同时满足多个相容的接口。而重载则是不同名称但功能相同的函数在同一类中多次出现。

  • 示例中的逻辑:在给出的代码中,parrot类只覆盖了bird类的部分函数,其他部分则保持不变。这种方式是否属于多态,或者只是简单的重载?

  • 实际应用中的限制:VCS仿真工具对多态的支持通常有限,这是否影响了我们对示例的理解?

  • 通过对比分析,可以看出当前示例中提到的hungry()hungry2()函数的重定义主要体现了函数的重载特性,而不是多态。多态的特点通常是指同一个接口在不同对象中有不同的实现,而在本例中,birdparrot之间并没有显示出不同的行为接口。

    ###结论

    基于以上分析,可以推测书中提到的“多态”其实是“重载”。虽然两个词在理论上有明显区别,但在实际应用中,尤其是在代码示例中的表现,更加接近于函数的重载特性。这种理解方式对理解编程语言的特性有着更直接的帮助。

    未来,我们需要进一步查阅相关教材和案例,以更准确地区分多态和重载的具体表现形式,及其在不同编程环境中的差异。

    转载地址:http://uxeyk.baihongyu.com/

    你可能感兴趣的文章
    嵌入式系统试题库(CSU)
    查看>>
    setup facatory9.0打包详细教程(含静默安装和卸载)
    查看>>
    java.security.InvalidKeyException: Illegal key size
    查看>>
    Linux kernel pwn --- CSAW2015 StringIPC
    查看>>
    IDEA 找不到 Persistence窗口解决办法
    查看>>
    Form窗体属性
    查看>>
    vue 错误收集
    查看>>
    00010.02最基础客户信息管理软件(意义类的小项目,练习基础,不涉及数据库)
    查看>>
    00013.05 字符串比较
    查看>>
    Effective Java 读书笔记
    查看>>
    访问servlet时弹出文件下载框解决方法
    查看>>
    IDEA-@Slf4j和log标签&@Data(Lombok)无效
    查看>>
    SpringCloud-Eureka报错 Error creating bean with name解决
    查看>>
    Thymeleaf 生成下标,索引,使用Stat变量
    查看>>
    初始微服务---Springcloud发展【第一期】
    查看>>
    RAFT 拜占庭将军 共识算法
    查看>>
    UE4 错误列表 error码(只记录我遇到的情况,持续添加,未完成)
    查看>>
    cmd编译.java文件 : java:720: 错误: 编码GBK的不可映射字符 Why ? ? ? ?
    查看>>
    Android 架构组件 – 让天下没有难做的 App
    查看>>
    能解决数据可视化大屏需求的3款可视化工具
    查看>>