作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我尝试编译这段代码时,我收到一条错误消息“Rectangle.java:35: 错误:无法从静态上下文中引用的非静态变量 this.inDemand = inDemand;“我通过将 inDemand 参数重命名为 isInDemand 并在 setInDemand 方法中从 inDemand 中删除 this 前缀找到了解决方法。我只是想了解为什么我最初所做的没有奏效。
代码如下:
public class Rectangle extends Polygon
{
private double height;
private static boolean inDemand = false;
private double width;
public Rectangle()
{
this(1,1,"None");
}
public Rectangle(double height, double width, String id)
{
super(id);
this.height = height;
this.width = width;
}
public double getArea()
{
return this.height*this.width;
}
public double getTotal()
{
if(inDemand == true)
{
return 2 * this.getArea();
}
else
{
return this.getArea();
}
}
public static void setInDemand(boolean inDemand)
{
this.inDemand = inDemand;
}
public static void main(String[] args)
{
Rectangle rect = new Rectangle();
rect.setInDemand(true);
System.out.println(rect.getTotal());
}
}
最佳答案
public static void setInDemand(boolean inDemand)
{
this.inDemand = inDemand;
}
this
在 static
方法中是不允许的,因为它引用当前对象。假设一个场景,当你在不创建实例的情况下以静态方式调用此方法。这是我的意思:
Rectangle.setInDemand(true);
是对此方法的合法调用,但不是在实例上,而是使用类名。
关于java - 矩形.java :35: error: non-static variable this cannot be referenced from a static context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19173922/
我是一名优秀的程序员,十分优秀!