如何解决以下代码段中的问题

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");

            
      

【讨论】:

以上是关于如何解决以下代码段中的问题的主要内容,如果未能解决你的问题,请参考以下文章

Chrome-Devtools代码片段中的多个JS库

如何自动对齐不同代码段中的注释?

如何使用mock对象替换内部代码段中的原始对象?

如何解决以下代码中的 ValueError?

如何解决输出问题?

如何解决 Flutter 中的 LateInitializationError?