无法访问任何封闭实例。必须使用类型的封闭实例限定分配(例如 x.new A(),其中 x 是 的实例)

2022-09-01 17:58:07

我是编程新手,明年我会在大学里学习。在我的公共静态虚空主...我无法创建新的 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());
    }
}

答案 1

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

static class SimpleCircle

答案 2

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

TestSimpleCircle tsc = new TestSimpleCircle();

现在,您可以创建一个内部类的实例,该实例与封闭类的实例相关联:TestSimpleCircle

SimpleCircle sc = tsc.new SimpleCircle();

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

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