方法不会实现和覆盖超类型的方法
时间: 2023-10-20 20:27:03 浏览: 36
在面向对象编程中,子类继承了超类型(父类、接口或抽象类)的方法和属性。子类可以通过重写(override)超类型的方法来改变其行为,但是子类不会覆盖(override)超类型的方法。
如果子类定义了与超类型同名的方法,那么这个方法将会隐藏超类型的方法。隐藏的方法只能在子类中访问,而无法通过超类型的引用来访问。这个过程称为方法隐藏(method hiding),而不是方法覆盖(method overriding)。
要实现方法覆盖,子类必须在方法签名、返回类型和访问修饰符上与超类型的方法保持一致。这样,当通过超类型的引用调用该方法时,实际执行的是子类中重写的方法。
下面是一个示例代码,演示了方法覆盖的概念:
```java
class SuperClass {
public void method() {
System.out.println("SuperClass method");
}
}
class SubClass extends SuperClass {
@Override
public void method() {
System.out.println("SubClass method");
}
}
public class Main {
public static void main(String[] args) {
SuperClass obj1 = new SuperClass();
obj1.method(); // 输出: SuperClass method
SuperClass obj2 = new SubClass();
obj2.method(); // 输出: SubClass method
}
}
```
在上述代码中,`SubClass` 继承了 `SuperClass` 的 `method` 方法,并重写了该方法。当通过 `SuperClass` 类型的引用调用 `method` 方法时,实际执行的是 `SubClass` 中重写的方法。这就是方法覆盖的概念。