在平常开发工作中,经常会用到方法重写和方法重载。方法重写和方法重载的区别,在面试中也会经常被问到,那么具体有什么区别呢?想要知道这两个的区别,先来看看它们的定义以及特点。
方法重载(Overload)是指在一个java类的定义中,可以定义多个相同名字的方法,那么只需要这些方法的参数不同就可以,这个就叫做方法重载。
方法重载概括成一句话就是同名不同参。同名是指方法名相同,不同参是指参数个数不同,参数的类型不同(其中在参数类型不同时,参数的顺序不同也可以),
方法重载只和方法名和方法参数有关,和方法的参数名字以及方法的返回值无关,
其中方法的参数名字以及方法的返回值与方法重载无关。
方法重写(Override)是指在子类中定义了一个方法,并且这个方法的返回类型,方法名以及方法参数类型,参数个数与从父类继承过来的方法完全相同,那么我们就说子类这个方法重写了父类的方法。
其中子类的访问修饰符在重写这个方法时候不能必须大于或等于父类的访问修饰符。
如果父类的方法有异常声明,那么子类中声明抛出异常类型不能比父类的范围广。
子类一旦重写了父类的方法,就会将父类的这个方法隐藏或覆盖,如果子类对象调用这个方法,调用的是重写后的方法。
那么想调用这个隐藏方法怎么办呢?java中提供了super关键字来实现。
通过上面对它们定义以及特点的理解,下面再来总结它们之间的区别。
1.方法重载是发生一个类当中,而方法重写是发生在子类和父类之间,是在继承下面发生的。
2.方法重载能够改变方法的返回值,而方法重写不可以。
3.方法重载和方法重写都是java多态的一种体现,区别在于方法重载是编译时的多态,而方法重写则是运行时的多态。