Java 公共类型Main必须在其自己的文件中定义

Java 公共类型Main必须在其自己的文件中定义,java,oop,Java,Oop,在本例中,我想添加新形状。然而,我无法理解错误到底是怎么回事 “公共类型Main必须在其自己的文件中定义” 这发生在我的主方法上。我曾尝试在main前面添加“static”,但它不起作用!任何建议都将不胜感激 .java文件只能包含一个公共类/接口 在您的情况下,您可以将Main类或Shape接口移动到另一个文件。A.java文件只能有一个公共类/接口。因此,您可能希望将其中一个类移出文件。但是,您仍然可以使用对象变量在主类中调用它 因为您没有使用任何ActionListener,所以内部类没有

在本例中,我想添加新形状。然而,我无法理解错误到底是怎么回事 “公共类型Main必须在其自己的文件中定义” 这发生在我的主方法上。我曾尝试在main前面添加“static”,但它不起作用!任何建议都将不胜感激

.java
文件只能包含一个公共类/接口


在您的情况下,您可以将
Main
类或
Shape
接口移动到另一个文件。

A.java文件只能有一个公共类/接口。因此,您可能希望将其中一个类移出文件。但是,您仍然可以使用对象变量在主类中调用它


因为您没有使用任何ActionListener,所以内部类没有意义,也没有用处

Java文件只能包含一个公共类或接口。一般来说,您将所有这些接口和类分离到单独的文件中。。。除非你想使用内部类,但那是另一回事question@Deadpool首先,您需要理解我的意思,因为它们可以是
公共的
,甚至可以是
静态的
,允许在父实例之外创建它们class@MadProgrammer更具体地说,只有一个顶级类型。这很有效!!!很感谢你的帮助!是的,我这样理解你的意思!非常感谢你!
public interface Shape { } 
class Circle implements Shape { 
    Circle(int radius) { /* ... */ } 
} 
class Rectangle implements Shape { 
    Rectangle(int height, int width) { /* ... */ } 
} 
public class Main { 
    public static void main (String[] args) { 
        Shape[] shapes = new Shape[2]; 
        shapes[0] = new Circle(1); 
        shapes[1] = new Rectangle(1, 2); 
        writeShapes(shapes); 
    } 
    public static void writeShapes(Shape[] shapes){ 
        for(Shape shape:shapes){ 
            if(shape instanceof Circle) System.out.println("Circle"); 
            else if(shape instanceof Rectangle) System.out.println("Rectangle"); 
        } 
    }