Java中方法重写和方法重载的6个区别

Yang 最新问题 171

方法重载和方法重写区别:1、定义;2、应用场景;3、方法签名;4、继承与多态;5、异常处理;6、方法访问修饰符;方法重载在同一个类中,方法名相同但参数类型、参数个数不同的方法之间的关系。在子类中,有相同的方法名、参数类型、参数个数并且返回类型兼容的方法称之为方法重写。

一、定义

方法重载(Overloading):在同一个类中,方法名相同但参数类型、参数个数不同的方法之间的关系。

方法重写(Overriding):在子类中,有相同的方法名、参数类型、参数个数并且返回类型兼容的方法称之为方法重写。

二、应用场景

方法重载:主要用于实现同一类操作对不同数据类型或者不同参数数量的处理。

方法重写:主要用于子类对父类方法的行为进行改变,实现多态。

三、方法签名

方法重载:必须改变方法的参数类型、个数或顺序。

方法重写:方法签名(方法名和参数列表)必须和被重写的方法完全相同。

四、继承与多态

方法重载:和继承、多态无关。

方法重写:是多态的一种体现,子类重写父类的方法,实现运行时的动态绑定。

五、异常处理

方法重载:对异常的处理没有特殊的要求。

方法重写:重写的方法不能抛出比被重写的方法更多的已检查异常。

六、方法访问修饰符

方法重载:对访问修饰符没有特殊的要求。

方法重写:重写的方法的访问权限不能比被重写的方法更严格。


延伸阅读

1、方法重载(Overloading)使用方法

方法重载是指在一个类中定义多个方法名相同,但参数列表不同的方法。参数列表不同可以体现在参数的个数不同或参数类型不同。以下是一个简单的方法重载的例子:

class Demo{

    void test(){

        System.out.println(“无参数”);

    }

    void test(int a){

        System.out.println(“a: ” + a);

    }

    double test(double a){

        System.out.println(“double a: ” + a);

        return a*a;

    }

}

在这个例子中,test方法被重载了三次:名列前茅次没有参数,第二次有一个整型参数,第三次有一个双精度浮点数参数。

2、方法重写(Overriding)使用方法

方法重写是指子类重写父类中的方法,子类中的方法必须和父类中被重写的方法具有相同的方法名、参数列表和返回值。但是子类的方法访问修饰符不能比父类的更严格。以下是一个简单的方法重写的例子:

class Parent{

    void display(){

        System.out.println(“Parent display”);

    }

}

class Child extends Parent{

    @Override

    void display(){

        System.out.println(“Child display”);

    }

}

在这个例子中,display方法在Child类中被重写,重写的方法和父类中的方法具有相同的方法名和参数列表。

需要注意的是,@Override注解不是必须的,但可以帮助我们在编译期间更早地发现错误。

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部