错误:找不到或加载主类State $ Place

时间:2017-02-27 13:49:07

标签: java

以下是我的代码集,文件名为State.java

class State 
{
    static String country;
    static String capital;


    State()     //Constructor
    {
        country = "America's";
        capital = "Washington D.C";

    }

    static void display()
    {
        System.out.println(capital + " " + "is" + " " + country + " " +"capital." );

        }
     }

    class Place extends State
    {
        static void display()
    {
            System.out.println("Capital is Washington D.C.");
        }


            public static void main(String[] args)
            {

                State st = new State();           
                Place pl = new Place();
                st.display();
                pl.display();
                st = pl;

            }

    }

Error: Could not find or load main class State$Place在我尝试运行时显示。

我的主要目的是显示 Capital is Washington D.C. 而不是capital + " " + "is" + " " + country + " " +"capital."。我也使用过构造函数。

我正在使用eclipse IDE来执行我的程序。

2 个答案:

答案 0 :(得分:0)

  

文件名是State.java

由于您的文件名为State.java,您的主要方法应该在课程State中,而不应在Place课程中

正如您在评论中指出要调用类display的{​​{1}}方法一样,有两种方法可以实现。

1 - 主要方法

中删除Place

2 - 使用多态作为类st.display();扩展了类Place

如果使用多态,您的State应该是

main method

答案 1 :(得分:0)

刚刚做了一个快速测试,与我的评论相反,似乎允许静态内部类包含一个main方法。但是,代码的问题在于,静态内部类允许包含静态方法(请参阅JLS)。由于Place不是静态内部类,因此它不能具有静态的主方法。

除此之外,您可能应该将main方法完全移动到外部类或其他类(请参阅cricket的注释)。