ava: 无法从静态上下文中引用非静态

java: 无法从静态上下文中引用非静态 变量 this

package sy1;

import java.util.Date;

public class s3 {
    abstract class Graph {
        public abstract double getArea();
        public abstract double getPerimeter();
        public Graph() {}

    }
    public  class Rectangle extends Graph {
        double width,length;

        public Rectangle(double w, double l) {
            width = w;length = l;
        }


        @Override
        public double getArea() {return width * length;}

        @Override
        public double getPerimeter() {return 2 * (width + length);}
    }
    public class Circle extends Graph{

        public double radius;
        public Circle(double r){ radius = r;}
        @Override
        public double getArea() {return 3.14 * radius * getPerimeter();}

        @Override
        public double getPerimeter() {return 2 * 3.14 * radius;}
    }
    public  class Box extends Rectangle {
        public double height;

        public Box(double w, double l,double h) {
            super(w, l);
            height = h;
        }
        @Override
        public double getArea() {
            return 2 * (super.getArea() +width * height + length * height);
        }
        public double getVolume(){return height * super.getArea();}
    }
    public  class Cylinder extends Circle{
        public double height;

        public Cylinder(double r,double h) {
            super(r);
            height = h;
        }

        @Override
        public double getArea() {return 2 * super.getArea() + super.getPerimeter() * height;}
        public double getVolume(){return super.getArea() * height;}
    }


    public class Text{
        public  static void main(String[] args) {
            Graph rectangle = new Rectangle(1,2);
            System.out.println("Rectangle: " + "Area:" + rectangle.getArea() + "Perimeter:" + rectangle.getPerimeter());
            Graph circle = new Circle(2.3);
            System.out.println("Circle: " + "Area:" + circle.getArea() + "Perimeter:" + circle.getPerimeter());
            Box box = new Box(1,2,3);
            System.out.println("Box: " + "Area:" + box.getArea() + "Volume:" + box.getVolume());
            Cylinder cylinder = new Cylinder(2.3,4);
            System.out.println("Cylinder: " + "Area:" + cylinder.getArea() + "Volume:" + cylinder.getVolume());
        }
    }

}

img


明明书上也是这样写的,看别人的代码和我差不多但是只有我的过不了编译,求各位解答

你那个代码功能上没问题,但是写的位置不对,怎么其他的类都写在s3这个类内部了?你把他们都从s3里拿出来,是能运行的

img

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^