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