如何解决以下代码段中的问题
Posted
技术标签:
【中文标题】如何解决以下代码段中的问题【英文标题】:How to fix the issue in the below code snippet 【发布时间】:2019-10-16 13:59:46 【问题描述】:我正在通过继承实现方法隐藏概念。我收到错误。
class Parent
synchronized strictfp final static public void main(String...ab)
System.out.println("Hello,Java is better than C++");
class Child extends Parent
static public void main(String[] args)
System.out.println("Hello, C++ is better than Java");
我正在以 Parent.java 的身份执行程序 javac Parent.java
预期
应该创建两个类 1.Parent.class 2.Child.class
java 父级
你好,Java 比 C++ 好
java子
你好,C++ 比 Java 好
实际
javac Parent.java
Parent.java:11:错误:Child 中的 main(String[]) 无法覆盖 Parent 中的 main(String...) 静态公共无效主要(字符串 [] 参数) ^ 被覆盖的方法是静态的,最终的 1 个错误
【问题讨论】:
继承不适用于静态方法。 不要使方法最终化。 @MuratKaragöz 好吧,静态方法是隐含的“最终”。final
肯定是多余的,但删除它不会有任何作用。
【参考方案1】:
您必须从父类声明中删除 final
字样。
https://intellij-support.jetbrains.com/hc/en-us/community/posts/206822805-What-is-the-point-of-the-static-method-declared-final-inspection-
【讨论】:
【参考方案2】:当您将方法设为final
时,该方法不能在任何类中被覆盖。所以你需要删除关键字final
。
class Parent
synchronized strictfp static public void main(String...ab)
System.out.println("Hello,Java is better than C++");
class Child extends Parent
static public void main(String[] args)
System.out.println("Hello, C++ is better than Java");
【讨论】:
以上是关于如何解决以下代码段中的问题的主要内容,如果未能解决你的问题,请参考以下文章