Java中方法重写和方法重载的6个区别
方法重载和方法重写区别: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注解不是必须的,但可以帮助我们在编译期间更早地发现错误。