Overload和Override的区别?

    Overload是重载的意思,Override是覆盖也就是重写的意思

    重载Overload:在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。

    重载的特点:与返回值类型无关,只看参数列表。

    重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中定义的方法,这相当于把父类中定义的那个完全相同的方法给覆盖掉了,这也是面向对象编程的多态的一种表现。子类覆盖父类方法时只能抛出父类的异常或者异常的子类或者父类异常的子集,因为子类可以解决父类的一些问题,但不能比父类有更多的问题。还有,子类方法的访问权限只能比父类的更大,不能更小。如果父类的方法是private类型,则子类中根本不存在覆盖,即子类中和父类的private的同名的方法没有覆盖的关系,因为private的访问权限只限于同一类中,而子类就不会访问到private的方法,所以是子类中增加的一个全新的方法。

    重载overload的特点就是与返回值无关,只看参数列表,所以重载的方法是可以改变返回值类型的。所以,如果两个方法的参数列表完全一样,是不能通过让他们的返回值类型不同来实现重载的。我们可以用反证法来说明这个问题,因为我们有时候调用一个方法时也可以不定义返回结果变量,即不要关心其返回结果,例如,我们调用map.remove(key)方法时,虽然remove方法有返回值,但是我们通常都不会定义接收返回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法,仅仅是返回类型不同,java就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来判断。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OverloadOverride是Java中的两个重要概念,它们的区别如下: 1. Overload(重载) Overload是指在同一个类中定义多个方法,它们具有相同的方法名,但参数列表不同(参数个数、类型或顺序不同)。Java编译器根据方法调用时传入的参数类型和数量来确定调用哪个方法。 举例: ``` public void print(int a) { System.out.println("int: " + a); } public void print(String s) { System.out.println("String: " + s); } ``` 在上述代码中,print方法被定义了两次,一个是接收int类型参数,另一个是接收String类型参数。当调用print方法时,根据传入参数的不同,编译器会选择调用相应的方法。 2. Override(重写) Override是指在子类中定义一个和父类中方法名、返回类型、参数列表相同的方法,从而覆盖父类中的方法。Java中的Override是基于继承实现的,子类可以重写父类的方法,从而实现多态。 举例: ``` public class Animal { public void move() { System.out.println("Animal can move"); } } public class Dog extends Animal { @Override public void move() { System.out.println("Dog can run and walk"); } } ``` 在上述代码中,Dog类继承了Animal类,并且重写了move方法。当调用Dog对象的move方法时,会执行子类中的move方法。 总结:OverloadOverride都是Java中的重要概念,Overload是指在同一个类中定义多个方法,它们具有相同的方法名,但参数列表不同;而Override是指在子类中重写父类的方法,从而实现多态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值