Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/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 - Fatal编程技术网

Java 静态法工作原理

Java 静态法工作原理,java,Java,我想知道,当我们调用由1指向的类animal(即,initialize_animal())中定义的静态方法时,在执行主函数时,输出是:默认高度0 但是如果我们把语句1放在语句2的正下方,那么我们执行主函数,输出是:defaultheight 20 请告诉我这两种输出的差异的原因 class test { public static void main(String[] args) { animal.initialize_animal(); // (1)

我想知道,当我们调用由1指向的类animal(即,
initialize_animal()
)中定义的静态方法时,在执行主函数时,输出是:
默认高度0

但是如果我们把语句1放在语句2的正下方,那么我们执行主函数,输出是:
defaultheight 20

请告诉我这两种输出的差异的原因

class test {
       public static void main(String[] args) {
           animal.initialize_animal();    // (1)
           cat obj=new cat();          //2
           System.out.println("Default height:" +obj.getheight());
      }
}
class animal {
     static int Height;

     public animal() {
          Height=0; 
     }

     public int getHeight() {
         return Height; 
     } 

     public static void initialize_animal() {
         Height=20;
     }
}
class cat extends animal {
     String Sound;

     Public cat() {
          Sound="mew";
     }

     public String getSound() {
          return Sound;
     } 
}

在第一种方法中,调用initialize_animal,将高度设置为20。然后创建一个新的动物,当它被创建时,高度在动物构造函数中被设置为0


第二种方法是,首先创建动物,然后将高度设置为20。

因为高度限定为静态。在整个程序执行过程中,只有一个“高度”。

与此无关。是的,我想知道1语句的原因。当它被执行并且之后,我们创建了一个cat类型的对象。你说的“状态修复导致了什么”是什么意思?它会使高度设置为20…因此,在tat之后,如果我们创建任意数量的对象,所有对象都将根据您的第一个解释显示输出0。是的,除非您再次调用initialize\u animal方法,或以任何其他方式设置高度。由于将高度变量设置为静态,因此所有动物对象的高度变量将保持不变。一种简单的方法是,变量属于类而不是单个对象。