简述java中方法重写与重载_Java中方法重写与方法重载的区别

方法重载: 是指一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同。这里需要注意的是参数不同需要满足2个条件,一个是参数的个数不同,一个是参数个数相同,但参数列表中对应的某个参数的类型不同。

方法重写: 是父类与子类之间的多态性,实质是对父类的函数进行重新定义,如果在子类中定义某方法与其父类有相同的名称和参数则该方法被重写,不过子类函数的访问修饰权限不能小于父类的;若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法,如需父类中原有的方法则可使用 super 关键字。 详细介绍: 方法重载: 方法名相同 参数不同(可以有三方面的不同) 数量不同 类型不同 参数的类型顺序不同 同一作用域 (同一个类中) 注意:方法重载跟方法的返回值类型没有任何关系。也就是说,只有返回值不同 的方法不能构成重载 当使用基本数据类型作为参数时,如果不能精确匹配到自身的数据类型且实参的 范围小于形参,则将自动匹配离形参最近的方法声明并对形参进行自动的类型转 换

如果参数是引用类型,由于继承和多态的引入,方法的重载情况可能会有更 复杂的情况产生。

public class MyMath { public int add(int a,int b){ return a+b; } public int add1(int a,int b){ return a+b; } //重载,参数数量不同 public int add(int a,int b,int c){ return a+b+c; } //参数类型不同,和返回值无关 public int add(int a, long b){ return (int)(a+b); } //参数的类型顺序不同 public int add(long a, int b){ return (int)(a+b); } //跟参数名称无关 // public int add(int c,int d){ // return c+d; // } } class MyMath2 { //作用域不同,不构成重载 public int add(float a,float b){ return 0; } }

方法重写: 方法的重写是指两个方法的返回值、方法名、参数的类型和个数相同(子类重写父类的方法)。 方法的重写,不能发生在同类中,只能发生在子类中。 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。 如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。 方法重写的权限:子类中的权限大于或等于父类的权限,(修饰符高低:private 小于 默认修饰符小余protected 小于 public) 特殊情况:子类不能重写父类被声明为private权限的方法

方法重写与方法重载区别

方法的重载是方法的参数个数或类型不同,方法名相同。 方法重写是要注意权限的问题,子类中的权限不能小于父类的权限,当父类的权限为private时,子类无法继承。也就无法产生所谓的重写。(修饰符高低:private 小于 默认修饰符 小于 public)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值