举例说明方法重载和重写的区别?
时间: 2023-09-14 10:11:23 浏览: 90
方法重载(Overloading)和方法重写(Overriding)是Java中的两个重要概念。
方法重载是指在同一个类中,方法名称相同,但参数列表不同的多个方法。这些方法被视为同一个方法的不同版本。方法重载通常用于提供不同的方法实现,以适应不同的参数类型或参数数量。
方法重写是指在子类中重新定义父类中已经定义的方法,方法名称、参数列表和返回类型都必须完全相同。子类中的方法会覆盖父类中的同名方法,称为方法重写。方法重写通常用于实现多态性,即子类可以根据需要重新定义从父类继承的方法。
例如:
```java
class A {
void foo() {
System.out.println("A.foo");
}
void bar(int i) {
System.out.println("A.bar:" + i);
}
}
class B extends A {
@Override
void foo() {
System.out.println("B.foo");
}
void bar(String s) {
System.out.println("B.bar:" + s);
}
}
public class Test {
public static void main(String[] args) {
A a = new A();
B b = new B();
a.foo(); // 输出 A.foo
b.foo(); // 输出 B.foo
a.bar(1); // 输出 A.bar:1
b.bar("hello"); // 输出 B.bar:hello
}
}
```
在上面的例子中,类A中定义了两个方法foo和bar,类B继承自A并重写了foo方法,同时增加了一个新方法bar(String s)。在Test类中,分别创建了A和B的实例,调用相应的方法,可以看到方法重载和方法重写的不同。
阅读全文