Java中的重写(Overriding)与重载( Overloading)
时间:2020-02-23 14:37:23 来源:igfitidea点击:
在Java中覆盖vs重载
覆盖和重载是Java编程中的核心概念。
它们是在我们的Java程序中实现多态的方法。
多态是OOPS概念之一。
1.什么是重写(Overriding)和重载( Overloading)?
当同一类中的两个或者多个方法具有相同的名称但参数不同时,则称为"重载"。
如果方法签名(名称和参数)在超类和子类中相同,则称为"覆盖"。
2.覆盖与重载
覆盖实现运行时多态,而重载实现编译时多态。
方法覆盖发生在父类和子类之间。
重载发生在同一类中的方法之间。覆盖方法具有相同的签名,即名称和方法参数相同。
重载的方法名称相同,但参数不同。使用重载时,要在编译时确定要调用的方法。
通过覆盖,可以在运行时根据对象类型确定方法调用。如果重载中断,则可能会在我们的程序中引起严重的问题,因为这种影响将在运行时可见。
如果重载中断,则会出现编译时错误,并且很容易修复。
3.重载和重载示例
这是Java程序中重载和重写的示例。
package com.theitroad.examples; import java.util.Arrays; public class Processor { public void process(int i, int j) { System.out.printf("Processing two integers:%d, %d", i, j); } public void process(int[] ints) { System.out.println("Adding integer array:" + Arrays.toString(ints)); } public void process(Object[] objs) { System.out.println("Adding integer array:" + Arrays.toString(objs)); } } class MathProcessor extends Processor { @Override public void process(int i, int j) { System.out.println("Sum of integers is " + (i + j)); } @Override public void process(int[] ints) { int sum = 0; for (int i : ints) { sum += i; } System.out.println("Sum of integer array elements is " + sum); } }
process()方法在Processor类中重载。
然后,它们在子类MathProcessor中被覆盖。