当前位置: 首页 > article >正文

重载(overload)和重写(override)的区别

重载 overload

重载的目的:节省类中的命名资源和提高代码的可读性。

重载是发生在一个类中
1、方法名相同
2、方法的参数不同(参数个数或者参数类型)
3、方法的返回值类型不影响重载
( 当两个方法的名字相同,参数也相同,但是返回值不同的时候,不构成重载 )


class Test {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int ret = add(a, b);
        System.out.println("ret = " + ret);
    }
    public static int add(int x, int y) {
        return x + y;
    }
    public static double add(int x, int y) {
        return x + y;
    }
}


 重写 override


重写是指 子类实现父类的同名方法,方法参数和返回值类型都完全相同;

重写发生在子类和父类之间,也就是说重写不是在同一个类里面;

在子类继承父类时,子类的方法和父类的方法相同(访问修饰限制符,返回值类型,方法名,参数列表),方法体不同,这种子类的方法将父类的方法覆盖叫做重写;


class Animal {
    public void eat(String food) { 
 		...
    }
}
 
class Bird extends Animal {
    @Override
    public void eat(String food) { 
		...
    }
}
//这里 Bird中的 eat 对 Animal 中的eat 进行重写
//在父子类的继承中有相同的方法,唯一不同就是方法体,
//一般是父类的该方法满足不了子类的需求所以才发生重写。

注意:

1. 重写和重载完全不一样,不要混淆
2. 普通方法可以重写,static 修饰的静态方法不能重写
3. 重写中子类的方法的访问权限不能低于父类的方法访问权限

重载和重写的区别总结如下表:

N区别重载重写
1概念方法名称相同,参数的类型及个数不同方法名称、返回值类型、参数的类型及个数完全相同
2范围一个类继承关系
3限制没有权限要求被重写的方法不能拥有比父类更严格的访问控制权限

 再回到我们的 systemverilog ,之前有提到过关于方法加 virtual 修饰的问题,简而言之就是在 子类中对父类中的方法进行 重写,加不加 virtual 修饰的区别在前面已经有过说明;

而对于 phase 而言,每个 component 的 phase 都是对 uvm_component 的phase 的重写,而且在 uvm_component 中都加了 virtual 修饰,所以至少在 方法 这个层次sv中不存在重载只存在重写(override)!!如下会报错:

class A;
 
  virtual function int dis(string str="A");
 
    $display("this is %s",str);
 
    dis=1;
 
  endfunction
 
endclass
 
class B extends A;
 
  function void dis(); // 只有函数名相同,参数不同
 
    $display("this is B");
 
  endfunction
 
endclass


http://www.kler.cn/a/384192.html

相关文章:

  • SQL 数据结构查询
  • java list使用基本操作
  • 黄山谷捷:以创新为翼,领航新能源汽车散热基板行业
  • JS数据结构之“栈”、“队列”、“链表”
  • Jest项目实战(6):搭建文档网站
  • 基于Python的学生宿舍管理系统
  • 智慧地下采矿可视化平台
  • ubuntu22.04 docker-compose安装postgresql数据库
  • Jenkins声明式Pipeline流水线语法示例
  • 特定数据库的备份脚本
  • 练习LabVIEW第四十一题
  • Unity Addressables 系统处理 WebGL 打包本地资源的一种高效方式
  • Scala学习记录,List
  • 数据库中的用户管理和权限管理
  • 【Python有哪些应用场景】
  • JavaScript 23种经典设计模式简介
  • 萤石设备视频接入平台EasyCVR多品牌摄像机视频平台海康ehome平台(ISUP)接入EasyCVR不在线如何排查?
  • 青少年编程与数学 02-003 Go语言网络编程 07课题、客户端服务器模型
  • 躺平成长-利用kimi智能编辑助手开发小程序第(10)天
  • react-native:解决使用webView后部分场景在安卓10崩溃闪退问题
  • python-pyside2使用中遇到的 问题整理
  • 杭州网世:智慧医疗数据存储难题?网世科技双活方案来破解
  • 西门子KTP系列HMI用户自定义弹窗-多弹窗共用
  • 《深度学习》——深度学习基础知识(全连接神经网络)
  • 【Vue 全家桶】7、Vue UI组件库(更新中)
  • 如何利用探商宝精准营销,抓住行业机遇——以AI技术与大数据推动企业信息精准筛选