首页 > 其他分享 >方法重载 v.s. 方法重写

方法重载 v.s. 方法重写

时间:2024-11-11 19:17:22浏览次数:6  
标签:重写 修饰符 display 重载 方法 public

方法重载(overload) v.s. 方法重写(override)��

在Java中,方法重载(Overloading)和方法重写(Overriding)是两种不同的概念,它们在用途和实现方式上都有所不同。

方法重载(Overloading)

  • 定义:方法重载是指在同一个类中存在多个方法名相同参数列表不同(参数数量不同或参数类型不同)的方法,和返回类型无关。
  • 作用域:重载的方法在同一个类中。
  • 返回类型:重载方法可以有不同的返回类型,但仅靠返回类型不同不能实现重载。
  • 示例:
public class Example {
    public void display(int a) {
        // ...
    }
    public void display(int a, int b) {
        // ...
    }
    public double display(double a) {
        // ...
        return a;
    }
}

方法重写(Overriding)

  • 定义:方法重写是指子类有一个与父类方法签名完全相同的方法,用于覆盖父类的同名方法。
  • 作用域:重写发生在子类和父类之间。
  • 返回类型:重写方法的返回类型必须与被重写方法的返回类型相同,或者是其子类。
  • 访问修饰符:重写方法的访问修饰符不能比被重写方法的访问修饰符更严格。
  • 示例:
public class Parent {
    public void display() {
        System.out.println("Parent display");
    }
}
public class Child extends Parent {
    @Override
    public void display() {
        System.out.println("Child display");
    }
}

主要区别

  • 范围:重载发生在同一个类中,而重写发生在子类和父类之间。
  • 参数列表:重载方法的参数列表必须不同,而重写方法的参数列表必须相同
  • 返回类型:重载方法可以有不同的返回类型,重写方法的返回类型必须相同或者是其子类
  • 访问修饰符:重载方法可以有不同的访问修饰符,重写方法的访问修饰符不能比被重写方法更严格
  • 异常:重载方法可以声明不同的异常,重写方法声明的异常必须与被重写方法的异常相同或者是其子类。

总的来说,方法重载是编译时多态的体现,而方法重写是运行时多态的体现。

标签:重写,修饰符,display,重载,方法,public
From: https://blog.csdn.net/qq_48973099/article/details/143619093

相关文章

  • 4-5-1.C# 数据容器 - Stack(Stack 的定义、Stack 元素的基本操作、Stack 元素的遍历、S
    Stack概述Stack<T>遵循后进先出的规则存储元素Stack<T>支持泛型,可以指定存储的元素的类型Stack<T>不是线程安全的,在多线程环境中需要谨慎使用一、Stack的定义定义StackStack<int>nums=newStack<int>();定义Stack并填充一些元素Stack<int>nums......
  • 4-4-1.C# 数据容器 - Queue(Queue 的定义、Queue 元素的基本操作、Queue 元素的遍历、Q
    Queue概述Queue<T>遵循先进先出的规则存储元素Queue<T>支持泛型,可以指定存储的元素的类型Queue<T>不是线程安全的,在多线程环境中需要谨慎使用一、Queue的定义定义QueueQueue<int>nums=newQueue<int>();定义Queue并填充一些元素Queue<int>nums=......
  • 4-3-1.C# 数据容器 - Dictionary(Dictionary 的定义、Dictionary 元素的基本操作、Dict
    Dictionary概述Dictionary<TKey,TValue>存储的是键值对(Key-Value),通过键(Key)来存储或修改值(Value)Dictionary<TKey,TValue>存储的键值对是无序的Dictionary<TKey,TValue>存储的键是不可重复的Dictionary<TKey,TValue>支持泛型,可以指定存储的键值对的类型D......
  • 解决 VSCode 中 C/C++ 编码乱码问题的两种方法
    解决VSCode中C/C++编码乱码问题的两种方法在中国地区,Windows系统中的cmd和PowerShell默认编码是GBK,但VSCode默认使用UTF-8编码。这种编码不一致会导致在VSCode终端中运行C/C++程序时出现乱码。以下介绍两种方法来解决这一问题。方法一:通过CodeRunner......
  • 地下水数值模拟软件Visual MODFLOW Flex安装,PEST操作方法,Aquifer Test抽水试验设计,地
    主要围绕的目前应用较为广泛的VisualModflowFlex6.1软件版本开展,结合具体应用场景,实例讲解软件的全流程应用过程,包括数据处理分析、数值模型构建以及模拟结果的输出等。本教程有助于提升技术人员地下水模拟软件的操作能力,解决地下水数值模拟技术实施过程中遇到的困难。同时,......
  • 部署神经网络时计算图的优化方法
    部署神经网络时计算图的优化方法部署神经网络时,各路框架基本都会把神经网络的计算建模为一个(有向无环的)计算图,之后再对这个计算图进行优化,包括硬件相关的优化和硬件无关的优化。本文介绍几种部署神经网络时计算图的优化方法,帮助读者在部署神经网络时理解部署工具都干了些什......
  • REBACCA网络推断方法
    REBACCA(REconstructionofBacterialCommunityCompositionthroughAdjustmentforCompositionallyConfoundedAssociations)是一种用于分析微生物组组成数据的新方法,专门设计用于减轻组成效应对关联分析的干扰。REBACCA可以从相对丰度数据中推断物种间的真实关联性,避免组成效......
  • Linux kernel 堆溢出利用方法(二)
    前言本文我们通过我们的老朋友heap_bof来讲解Linuxkernel中off-by-null的利用手法。在通过讲解另一道相对来说比较困难的kerneloff-by-null+dockerescape来深入了解这种漏洞的利用手法。(没了解过docker逃逸的朋友也可以看懂,毕竟有了root权限后,docker逃逸就变的相对简单了)。......
  • PG 修改表结构提示有试图依赖的处理方法
     ALTERTABLEvictimALTERCOLUMNvictim_belong_urlTYPEvarchar(1000)USINGvictim_belong_url::varchar(1000); 修改字段长度通过修改pg_attribute基表的方式来绕开这个限制  #通过表名查出attrelidSELECTrelname,attname,attnum,attrelid,attnameFR......
  • navicat 连接记住密码忘记密码找回密码的方法
    今天oracle用户过期system用户密码忘了,幸亏服务器的navicat记住密码了。在网上找了好久找回密码的方法,记录一下。第一步  这个会在桌面上生成一个文件,在文件中找到  Password=   第二步在网上解密这个密码  importjavax.crypto.Cipher;importjavax.crypt......