Java:为什么可以';我们不能重写一个方法,使其成为静态的吗?

Java:为什么可以';我们不能重写一个方法,使其成为静态的吗?,java,static,Java,Static,为什么我们不能重写一个非静态方法使其成为静态的呢。我在尝试执行此操作时出错: 此静态方法无法对aSuperClass隐藏实例方法 非常感谢 静态方法不会以多态性工作的方式被重写。但是,当您尝试重写静态方法时,Java允许名称隐藏的概念 现在来回答你的问题。静态方法可以通过类名和对象名调用。如果用静态方法重写非静态方法,编译器将如何知道调用哪个方法 static void f(){} A obj = new A(); A.f()和obj.f()都将调用静态方法。如果您在这里放置一个非静态的f(

为什么我们不能重写一个非静态方法使其成为静态的呢。我在尝试执行此操作时出错:

此静态方法无法对aSuperClass隐藏实例方法


非常感谢

静态方法不会以多态性工作的方式被重写。但是,当您尝试重写静态方法时,Java允许名称隐藏的概念

现在来回答你的问题。静态方法可以通过类名和对象名调用。如果用静态方法重写非静态方法,编译器将如何知道调用哪个方法

static void f(){}

A obj = new A();

A.f()
obj.f()
都将调用静态方法。如果您在这里放置一个非静态的
f()
,那么对于
obj.f()
,静态方法不会以多态性的方式被覆盖。但是,当您尝试重写静态方法时,Java允许名称隐藏的概念

现在来回答你的问题。静态方法可以通过类名和对象名调用。如果用静态方法重写非静态方法,编译器将如何知道调用哪个方法

static void f(){}

A obj = new A();

A.f()
obj.f()
都将调用静态方法。如果在此处放置非静态的
f()
,则会开始混淆
obj.f()

重写意味着在子类中为实例方法提供新的实现,实例方法可能会也可能不会与类实例成员一起工作。覆盖它们并将其重新定义为
静态
,这是不合逻辑的<代码>静态表示方法与类相关,而不是与类的实例相关

在C语言和Java语言中都无法做到这一点

关于C#请看

不能使用新修改器、静态修改器或虚拟修改器修改 重写方法


重写意味着在子类中为实例方法提供新的实现,实例方法可以与类实例成员一起工作,也可以不与类实例成员一起工作。覆盖它们并将其重新定义为
静态
,这是不合逻辑的<代码>静态表示方法与类相关,而不是与类的实例相关

在C语言和Java语言中都无法做到这一点

关于C#请看

不能使用新修改器、静态修改器或虚拟修改器修改 重写方法


哪种语言C#JAVA???对不起,我没有提到JAVA。哪种语言C#JAVA???对不起,我没有提到JAVA。