【发布时间】:2020-06-16 16:27:49
【问题描述】:
我正在再次研究一些 OOP 概念,所以我编写了这个简单的代码,只是为了看看重写方法是如何工作的,令人惊讶的是,它不起作用。另外,请忽略类名是HelloWorld的事实,它只是一个用于学习目的的文件。它已经改为 Filha.java 顺便说一句
class HelloWorld {
public static void imprimir() {
System.out.println("Oie");
}//
public static void imprime(int a) {
System.out.println("27");
}//
}//
public class Filha extends HelloWorld {
public static void main(String[] args) {
imprimir();
imprime(55);
}//
@Override
public static void imprimir() {
System.out.println("Ola");
}//
@Override
public static void imprime(int num) {
System.out.println(num);
}//
}//
昨天,错误是 public static void main(String[] args) { 中的 Exception in thread "main" java.lang.Error: Unresolved compiler problem线,但我关闭了我的电脑,今天打开它,它不再存在了。
现在错误是 Filha 类型的方法 imprimir() 必须覆盖或实现 public static void imprimir() { 行的超类型方法。正如预期的那样,调用 imprimir() 的 main 方法中也存在错误。
我真的不知道要提供什么其他信息,因为它是一个简单的代码,有一个简单的问题(我相信),这也是我的第一个问题,所以如果我遗漏任何内容,请询问,我会更完整.
【问题讨论】:
-
静态方法不能被覆盖。它们只能被隐藏。调用哪个静态方法是在编译时确定的——它们不是运行时多态的。
-
您不能覆盖静态方法。
标签: java oop overriding