Java 静态法工作原理
我想知道,当我们调用由1指向的类animal(即,Java 静态法工作原理,java,Java,我想知道,当我们调用由1指向的类animal(即,initialize_animal())中定义的静态方法时,在执行主函数时,输出是:默认高度0 但是如果我们把语句1放在语句2的正下方,那么我们执行主函数,输出是:defaultheight 20 请告诉我这两种输出的差异的原因 class test { public static void main(String[] args) { animal.initialize_animal(); // (1)
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方法,或以任何其他方式设置高度。由于将高度变量设置为静态,因此所有动物对象的高度变量将保持不变。一种简单的方法是,变量属于类而不是单个对象。