没有封闭的实例可访问.必须使用封闭的类型实例限定分配(egxnew A(),其中x是实例)

Nic*_*nov 7 java class

我是编程新手,明年我将在大学学习它.在我的public static void main中...我无法创建一个新的SimpleCircle.此错误仅发生在我的圈子上.非常感谢你的帮助!:)

public class TestSimpleCircle {

    class SimpleCircle {
        double radius;

        SimpleCircle(){
            radius = 1;
        }

        SimpleCircle(double newRadius){
            radius = newRadius;
        }

        double getArea() {
            return radius * radius * Math.PI;
        }

        double getPerimeter() {
            return 2 * radius * Math.PI;
        }

        void setRadius(double newRadius) {
            radius = newRadius;
        }
    }

    public static void main(String [] args) {
        SimpleCircle circle = new SimpleCircle();
        System.out.println("the area of the circle of radius "+circle.radius+" is "+circle.getArea());

        SimpleCircle circle2 = new SimpleCircle(25);
        System.out.println("the area of the circle of radius "+circle2.radius+" is "+circle2.getArea());

        SimpleCircle circle3 = new SimpleCircle(125);
        System.out.println("the area of the circle of radius "+circle3.radius+" is "+circle3.getArea());

        circle.radius = 100;
        System.out.println("The area of the circle of radius "+circle.radius+" is "+circle.getArea());
    }
}
Run Code Online (Sandbox Code Playgroud)

Iva*_*van 17

您将SimpleCircle类声明为TestSimpleCircle的内部类.您需要将其移动到单独的文件中或将其声明为

static class SimpleCircle
Run Code Online (Sandbox Code Playgroud)


Prz*_*kal 7

SimpleCircle是阶级的内在阶级TestSimpleCircle。这意味着您首先需要一个包含类的对象的实例,例如:

TestSimpleCircle tsc = new TestSimpleCircle();
Run Code Online (Sandbox Code Playgroud)

现在,您可以创建与封闭TestSimpleCircle类实例连接的内部类实例:

SimpleCircle sc = tsc.new SimpleCircle();
Run Code Online (Sandbox Code Playgroud)

如您所见,要创建内部类对象的实例,您必须指定您希望其属于哪个封闭类对象(tsc.new在示例中带有)。

如果您需要创建一个SimpleCircle实例,而没有包含该类的对象的实例,则应将此类声明为 static class SimpleCircle{code of your class here}