一、重写与重载的区别
在Java中,方法重写和方法重载是两个重要的概念。方法重载和方法重写的作用都是为了让程序员更加灵活地使用方法,但是它们之间的区别非常大。
方法重载(Overload)发生在同一个类中,同名的方法可以有不同的参数列表。方法重写(Override)则是子类重写父类的方法,方法名、返回值类型和参数个数都必须一致,方法访问修饰符只能扩大不能缩小。
/* 演示方法重载 */ public class OverloadDemo { public int add(int a, int b) { return a + b; } public int add(int a, int b, int c) { return a + b + c; } public double add(double a, double b) { return a + b; } }
/* 演示方法重写 */ public class OverrideDemo { public void eat() { System.out.println("吃食物"); } public class Cat extends OverrideDemo { @Override public void eat() { System.out.println("猫吃鱼"); } } }
二、JAVA中重载和重写的区别
方法重载和方法重写之间的不同点可以以下几个方面来理解:
1. 方法名
方法重载必须使用同一个方法名,而方法重写必须使用与父类方法相同的方法名。
2. 参数列表
方法重载的参数列表必须不同,而方法重写的参数列表必须与父类方法完全相同。
3. 返回类型
方法重载的返回类型可以不同,而方法重写的返回类型必须与父类方法相同或是更加具体。
4. 修饰符
方法重载的访问修饰符没有特别要求,而方法重写的访问修饰符不能缩小,只能扩大或不变。
三、方法的重写和重载的区别
1. 对象
方法重写是指子类继承父类的一个方法,并在子类中重新编写该方法。方法重载在同一个类中对一个方法进行多次定义,每个方法有不同的参数类型或参数个数。
2. 调用方式
方法重载可以使用不同的参数列表,它们可以通过参数类型或者参数个数来区分。而方法重写需要使用父类的引用来调用。
3. 调用时机
方法重载发生在编译时期,Java编译器会在调用方法时根据参数类型进行匹配。而方法重写发生在运行时期,由JVM负责调用正确的方法。
四、JAVA中方法重写和重载的区别
1. 名称和参数
方法重载发生在同一个类中,同名的方法可以有不同的参数列表。方法重写是指子类重写父类的方法,方法名、返回值类型和参数个数都必须一致,方法访问修饰符只能扩大不能缩小。
2. 继承关系
方法重载不涉及继承关系,只是在同一个类中对同一个方法进行多次定义。方法重写涉及到继承关系,需要在子类中覆盖掉父类的方法。
3. 编译时和运行时
方法重载在编译时期就确定了调用哪个方法,而方法重写是在运行时期动态绑定的,由JVM决定调用哪个方法。
五、JAVA重载和重写的区别
1. 定义
方法重载是在同一个类中定义多个具有相同名称的方法,但是参数列表不同。方法重写是在子类中对继承自父类的方法进行重新定义。
2. 判断方式
方法重载的判断依据是方法的参数列表;而方法重写的判断依据是方法的声明。
3. 运行效果
方法重载是在编译时就确定了调用哪个方法,而方法重写是在运行时动态绑定的。
/* 重载例子 */ public class OverloadDemo { public int add(int a, int b) { return a + b; } public int add(int a, int b, int c) { return a + b + c; } public double add(double a, double b) { return a + b; } }
/* 重写例子 */ public class OverrideDemo { public void eat() { System.out.println("吃食物"); } public class Cat extends OverrideDemo { @Override public void eat() { System.out.println("猫吃鱼"); } } }
结论
方法重载和方法重写虽然名称相似,但是概念和用法却完全不同。
方法重载用于在同一个类中定义名称相同的多个方法,用于提高代码的复用性和可读性。
方法重写用于在子类中重新定义继承自父类的方法,可以使程序员根据自己的需求来定制自己所需的方法实现。