java方法的重载与重写

相信很多小伙伴在初学java的时候会对方法的重写与重载产生困扰,博主在这里发表一下自己对于这两个概念的理解,供各位小伙伴参考一下。

首先方法的重载发生在同一个类中,两个或多个方法的方法名相同,参数列表不同(具体可以分为参数个数不同,类型不限;参数个数相同,类型不同;参数个数相同,类型相同但参数顺序不一致;三种情况)方法的返回值可以相同也可以不同,由此可见方法的重载重点要看两个方法是否在同一类中,以及方法的参数是否相同。重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载。举个例子下面的java.lang.String包下的两个substring方法就是方法的重载。

public String substring(int beginIndex){}
public String substring(int beginIndex, int endIndex) {}

我们再来看看方法的重写,首先方法的重写发生在父子关系的类中,只能由子类继承并重写父类的方法,方法的重写同样需要方法名相同,并且参数列表也必须相同,返回值类型不能大于父类方法的返回值类型,比如父类为void子类也必须为void,子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型。访问修饰符范围子类大于等于父类;如果父类方法访问修饰符为 private 则子类就不能重写该方法。

以上就是我对方法重写和重载的理解希望能帮助大家更好理解。