参数未通过构造函数传递

bzzcjhmw  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(308)
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
我传递给构造函数的参数似乎没有被多维数据集类正确处理。
我做错什么了?

q9yhzks0

q9yhzks01#

我猜你还没弄清楚什么是物体。如果您查看jdk代码,您将看到定义对象的类的示例java.lang.string、java.lang.integer、java.lang.stringbuilder是您可以查看以了解对象是什么的类。一旦你了解了其中一些课程是如何运作的,你就可以理解剩下的课程背后的动机了。
有对象也有类。我们使用类作为模板来创建对象。每个对象都有自己的状态。例如,程序中可以有许多不同的字符串。每个字符串都是一个具有自己状态的对象,使用自己的示例变量。但是静态变量不属于对象,它们属于类。
“示例”是指对象的一个示例。我们使用构造函数示例化对象。
你的方法像

public double volume(){

它们被称为访问器或getter,因为它们用于访问对象的状态。
让示例方法访问器访问静态变量是令人困惑的。静态成员的作用域不同于示例成员,在这里将它们组合在一起很容易混淆。很难说目的是什么,但不应该使用静态变量来描述特定于示例的状态。
静态变量是公共的,并且与访问器同名。如果调用没有paren的成员,则直接调用变量。如果您使用parens,您将调用访问器。
如果确实需要静态变量,则不需要在构造函数中初始化它们。构造函数用于初始化类的示例,其中静态变量不属于一个示例,而是属于类。使用构造函数来设置示例变量,而不是静态变量。

相关问题