abstract class shape{
public double volume;
public double surface;
}
class cube extends shape{
public static double side;
public static double newSide;
cube(double newSide){
side = newSide;
}
public double volume(){
return side;
}
public double surface(){
return newSide;
}
}
public class shapes {
public static void main(String[] args) {
cube a = new cube(5);
System.out.println (a.volume);
System.out.println (a.surface);
}
}
这将产生:
0.0 0.0
我传递给构造函数的参数似乎没有被多维数据集类正确处理。
我做错什么了?
1条答案
按热度按时间q9yhzks01#
我猜你还没弄清楚什么是物体。如果您查看jdk代码,您将看到定义对象的类的示例java.lang.string、java.lang.integer、java.lang.stringbuilder是您可以查看以了解对象是什么的类。一旦你了解了其中一些课程是如何运作的,你就可以理解剩下的课程背后的动机了。
有对象也有类。我们使用类作为模板来创建对象。每个对象都有自己的状态。例如,程序中可以有许多不同的字符串。每个字符串都是一个具有自己状态的对象,使用自己的示例变量。但是静态变量不属于对象,它们属于类。
“示例”是指对象的一个示例。我们使用构造函数示例化对象。
你的方法像
它们被称为访问器或getter,因为它们用于访问对象的状态。
让示例方法访问器访问静态变量是令人困惑的。静态成员的作用域不同于示例成员,在这里将它们组合在一起很容易混淆。很难说目的是什么,但不应该使用静态变量来描述特定于示例的状态。
静态变量是公共的,并且与访问器同名。如果调用没有paren的成员,则直接调用变量。如果您使用parens,您将调用访问器。
如果确实需要静态变量,则不需要在构造函数中初始化它们。构造函数用于初始化类的示例,其中静态变量不属于一个示例,而是属于类。使用构造函数来设置示例变量,而不是静态变量。