Java中的方法重载和方法重写之间有什么区别?
以下是重载和覆盖之间的显着差异。
方法重载
在方法重载中,一个类有两个或多个名称相同且参数不同的方法。
在重载中,两种方法的返回类型都可能不同。
JVM在方法调用时根据传递给它的参数调用相应的方法。
示例
public class OverloadingExample { public void display(){ System.out.println("Display method"); } public void display(int a){ System.out.println("Display method "+a); } public static void main(String args[]){ OverloadingExample obj = new OverloadingExample(); obj.display(); obj.display(20); } }
输出结果
Display method Display method 20
方法覆盖
在方法覆盖中,超类和子类具有名称相同的方法,包括参数。
在重写中,返回类型也应该相同。
JVM根据用于调用方法的对象来调用相应的方法。
示例
class SuperClass{ public static void sample(){ System.out.println("Method of the super class"); } } public class RuntimePolymorphism extends SuperClass { public static void sample(){ System.out.println("Method of the sub class"); } public static void main(String args[]){ SuperClass obj1 = new RuntimePolymorphism(); RuntimePolymorphism obj2 = new RuntimePolymorphism(); obj1.sample(); obj2.sample(); } }
输出结果
Method of the super class Method of the sub class