Java中重载(Overloading)和重写(Overriding)都是针对Java方法的。
重载
如果一个类中定义了多个同名的方法,他们或有不同的参数或有不同的参数类型。则称为方法的重载。
重写
在子类和父类的关系中,如果在子类中定义某方法与其父类的方法有相同的名称和参数,称该方法被重写,子类对象调用此方法时,将调用子类中的定义,父类的方法被覆盖掉了。
重载代码示例
public class Hello { public void say() { System.out.println("Hello"); } //重载 public void say(String s) { System.out.println("Hello" + s); } public static void main(String[] args) { Hello hello = new Hello(); hello.say(); hello.say("World"); } } //输出 Hello HelloWorldHello类中定义了两个say方法,参数不同,编译期时会根据参数选择调用哪个方法。
重写代码示例
//父类 public class Father { public void say() { System.out.println("I am Father"); } } //子类 public class Son extends Father { @Override public void say() { System.out.println("I am Son"); } public static void main(String[] args) { Father father = new Son(); father.say(); } } //输出 I am Son主方法中,father对象被定义为Father类型,编译期时,会检查Father是否有say方法,有就编译通过,运行期时,Son对象被new处理赋值给father,也就是父类引用指向子类对象,所以father调用say方法时,会调用Son类的say方法,输出I am Son。