java重载与重写区别

先来谈谈:重载(Overloading)
简单的说重载就是在同一个类中,方法名相同,参数列表不同,与返回值无关。
参数列表不同:
1.参数的个数。
2.参数对应的数据类型不同
简单案例:

    public class Demo{  
        public static void main(String[] args) {

            System.out.println(sum(10,20));
            System.out.println(sum(10,20,30));
        }
        //求两个数的和
        public static int sum(int a,int b){
                    return a+b;
        }
         //求三数的和
        public static int sum(int a,int b,int c){
                    return a+b+c;
        }
    }

再来说说:重写(overriding)
重写:父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。

但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。

方法重写又称方法覆盖。(只能重写父类的非私有方法)
简单举例:

public class Change{ 

    public static void main(String[] args){
            Son s = new Son();
            s.Speak();
    }
}
   class Father{
        public  void Speak(){
            System.out.println("Father");
        } 
   }
    class Son extends Father{
        public void Speak(){
            super.Speak();
            System.out.println("Son");
       }
    }

重写的规则:
1.参数列表必须与被重写的方法参数列表一模一样。
2.返回值类型必须与被重写的方法返回值类型一模一样。
3.访问修饰符的权限只能大于或者等于被重写方法的权限(public>protected>default>private)
4.重写的方法不能抛出新的异常,或者比被重写方法范围更广的异常,只能抛出与被重写方法一致或者是其子类的异常。(例如:若父类抛出IOException异常,子类不能抛出Exception异常,只能抛出IOException或者IOException子类的异常 )。

重载的规则:
1.方法名称,参数列表必须相同。
2.可以有不同的访问修饰符。
3.返回值类型可以不同。
4.可以抛出不同的异常。

重写与重载的区别
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的重载(Overloading)和重写(Overriding)是两种不同的概念,它们有以下区别: 1. 定义: - 重载是指在同一个类中,方法名称相同但参数列表不同的多个方法。 - 重写是指在子类中,重新定义父类中已有的方法方法名称、参数列表和返回类型都相同。 2. 实现方式: - 重载是在同一个类中定义多个方法,可以通过改变方法的参数个数、类型或顺序来区分不同的方法。 - 重写是在子类中对父类的方法进行重新实现,需要使用`@Override`注解来标识。 3. 调用方式: - 重载是根据方法的参数列表来决定调用哪个方法,编译器会根据传入的参数类型和数量来选择合适的方法。 - 重写是通过继承关系,在运行时动态决定调用哪个方法,会根据对象的实际类型来确定调用的方法。 4. 关系: - 重载发生在同一个类中,是静态绑定(编译时绑定)的一种表现。 - 重写发生在父子类之间,是动态绑定(运行时绑定)的一种表现。 5. 目的: - 重载主要用于提供多个具有相似功能但参数不同的方法,提高代码的可读性和可用性。 - 重写主要用于子类对父类方法的扩展和特殊化需求。 总的来重载是在同一个类中根据参数的不同定义多个方法,用于提供多个具有相似功能的方法重写是在子类中重新实现父类方法,用于对父类方法的扩展和特殊化需求。重载是静态绑定,而重写是动态绑定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值