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());
}
}
}
明明书上也是这样写的,看别人的代码和我差不多但是只有我的过不了编译,求各位解答