函数的重写(Override)和函数的重载(Overload)

主类

/*
函数的重写(Override)和重载(Overload)
    重写:
        函数的重写是面向对象中子类继承父类,父类中的函数不适用于子类中的函数,所以在子类中对父类中
        的方法进行重写,重写方法时父类与子类的方法名相同,参数类型相同,参数个数相同,不同的就是方
        法所实现的功能不同,即方法的内容不同。可以理解为重新写这个方法。
    重载:
        函数的重载是在同一个类中针对不同类型的参数而对方法进行重载,重载时函数的参数列表不同。
*/
class MethodOverrideOverload{
    public static void main(String[] args){
        //Override
        Old method=new New();
        method.write();
        //Overload
        Overload(1);
        Overload(1,2);
    }
    public static void Overload(int number){
        System.out.println("我是第 "+number+" 个方法");
    }
    public static void Overload(int number1,int number2){
        System.out.println("我是第 "+number2+" 个方法");
    }
}

父类

class Old{
    public void write(){
        System.out.println("我是原函数");
    }
}

重载类

public class New extends Old{
    @Override
    public void write(){
        System.out.println("我是重写函数");
    }
}

运行结果

我是重写函数
我是第 1 个方法
我是第 2 个方法

分析

对于重写而言,编译时编译器检查Old类中有一个write函数,编译通过。运行时new了一个新New对象,赋给method,虚拟机知道是调用New中的write方法,即在运行时才知道调用哪个方法
对于重载而言编译时根据不同的实参来调用函数

发布了19 篇原创文章 · 获赞 18 · 访问量 513

猜你喜欢

转载自blog.csdn.net/weixin_45887924/article/details/104536377