Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在不创建对象实例的情况下调用变量_Java_Oop - Fatal编程技术网

Java 在不创建对象实例的情况下调用变量

Java 在不创建对象实例的情况下调用变量,java,oop,Java,Oop,我搜索过如何在不创建StackOverflow对象实例的情况下调用变量,发现答案是使用static关键字来声明变量,您可以在扩展类中调用该变量,而不创建该类的实例,但它对我不起作用。这是我试过的- abstract public class Flower{ private static int petals; public void setPetals(int petals){ this.petals; } } 因此,我从另一个类调用了s

我搜索过如何在不创建StackOverflow对象实例的情况下调用变量,发现答案是使用
static
关键字来声明变量,您可以在扩展类中调用该变量,而不创建该类的实例,但它对我不起作用。这是我试过的-

abstract public class Flower{
      private static int petals;
      public void setPetals(int petals){
          this.petals;
      }
}
因此,我从另一个类调用了
setPetals
方法。我已经附上了该课程的截图。在LotusFlower类中,我该如何调用petals变量?

需要改进的地方很少:

  • setPetals
    方法定义不是静态的,您实际上没有在此处设置petals的值:

    public static void setPetals(int petals){
        this.petals = petals;
    }
    
  • petals变量是静态的,可以从
    setPetals
    引用,而不是作为:

    Flower.petals = petals; 
    
  • 此外,您还可以使用另一个类中的
    setPetals
    方法,如下所示:

    Flower.setPetals(100);
    

  • 它是
    private
    。你的
    setPetal()
    不是
    static
    ,你调用它,而不是访问你的
    static
    变量
    petals
    。。。因此,在方法中也添加
    static
    。我相信您有这样做的充分理由,但在我看来,这并不是一个好例子。如果您有几个
    Flower
    的子类,并且每个子类都设置了一个静态值,则先前的子类将被覆盖。请注意:
    petals
    是私有的,不能直接从另一个类引用。@LittleSanti我所做的引用在
    setPetals
    中。更新了答案,把它叫出来。