m0_63601269 2023-04-05 19:12 采纳率: 60%
浏览 10
已结题

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


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

  • 写回答

2条回答 默认 最新

  • 关注

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

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月14日
  • 已采纳回答 4月6日
  • 创建了问题 4月5日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改