前言一、什么是方法重载二、什么是方法重写三、方法重写与方法重载的对比总结
前言
在日常的编程生活中,我们一定会接触到有关方法重写,方法重载,这两个词语仅存在一个字的差别,因此我们有可能会搞混,那么现在我们就一起来仔细对比一下吧。
一、什么是方法重载
Java允许同一个类里定义多个同名方法,只要形参列表不同就行。写同一个方法名,但是形参列表不同就是方法的重载。至于方法的其他部分,如返回值、修饰符等,与方法重载无关。
下面程序是方法重载的示例:
public class Overload {
//下面定义了两个test()方法,但是方法的形参列表不同
//系统可以区分这两个方法,这被称为方法重载
public void test() {
System.out.println("方法1,无参");
}
public void test(String msg) {
System.out.println("方法2,带参");
}
public static void main(String[] args) {
Overload o1 = new Overload();
//首先调用方法1
o1.test();
//再调用方法2,此时需要传入一个参数
o1.test("hello");
}
}
编译运行没有任何问题,虽然两个test方法名字一样,但是他们是截然不同的两个方法,这就是方法重载。
二、什么是方法重写
方法重写往往发生在继承的情况下,子类方法覆盖了父类方法,这个子类的方法与被覆盖的那个方法有着相同的方法名,形参列表,这就是方法重写。但是注意,子类方法的返回值类型要比父类的返回值类型更小或相等,子类方法抛出的异常也要比父类方法抛出的异常更小或相等。
下面是方法重写的程序示例:
class Bird {
//Bird类的fly方法
public void fly() {
System.out.println("我是鸟,我会飞");
}
}
//下面定义一个鸵鸟类继承鸟类
class Ostrich extends Bird {
//鸵鸟虽然是鸟但并不会飞,如果使用父类的fly方法显然不合理,这时候我们就可以方法重写
public void fly() {
System.out.println("虽然我是鸟,但是我不会飞");
}
public static void main(String[] args) {
Ostrich o = new Ostrich();
o.fly();
}
}
三、方法重写与方法重载的对比
方法重载和重写无疑方法名都是相同的,方法重写:重写这个单词我们可以理解为写方法体,那既然方法体改变了,是不是就有可能改变它的返回值,并且还有抛出的异常也可能改变,只要我们注意返回值和异常需要小于等于父类的对应方法的。方法重载:重载这个单词我们可以理解为用不同的形参重新载入这个方法体,并不需要考虑返回值等。
总结
我们可以根据自己的应用场景来判断是方法重载还是方法重写,在涉及继承的相关知识时,子类虽然能继承父类的方法,但是毕竟儿子不可能和爹一模一样,那么当他们有不一样的地方时,需要去重写方法。当我想要多个拥有相同名字的方法,通过不一样的参数传入可以实现不同功能,这就是方法重载。



