Java基础三之方法重写和重载

    xiaoxiao2022-07-02  124

    目录

    概念重写和重载的区别

    概念

    Java中重载(Overloading)和重写(Overriding)都是针对Java方法的。

    重载

    如果一个类中定义了多个同名的方法,他们或有不同的参数或有不同的参数类型。则称为方法的重载。

    重写

    在子类和父类的关系中,如果在子类中定义某方法与其父类的方法有相同的名称和参数,称该方法被重写,子类对象调用此方法时,将调用子类中的定义,父类的方法被覆盖掉了。

    重写和重载的区别

    重载是个编译期概念,重写是个运行期概念。重载遵循”编译期绑定“,在编译时根据参数变量的类型判断调用哪个方法。重写遵循”运行期绑定“,在运行时根据引用变量指向的对象来确定调用父类还是子类的方法。在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 HelloWorld

    Hello类中定义了两个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。

    最新回复(0)