2012-07-03 40 views
-3

我想知道,当我们调用由1指向的类动物(即initialize_animal())中定义的静态方法时,那么在执行主函数时输出为:Default height 0静态方法的工作

但是,如果我们将语句1放在语句2的下面,那么我们执行主函数输出为:Default Height 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; 
    } 
} 
+3

[标签:javascript]与[tag:java]无关。 –

回答

1

在第一种方式,你叫initialize_animal,这台高度为20,那么你做一个新的动物,并创建时,高度被在动物的构造函数设置为0。

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

+0

是的,我真的想知道1声明是什么原因造成的。当它被执行时,我们创建一个cat类型的对象。 –

+0

你是什么意思“修改原因”?它导致高度设置为20 ... – Sterling

+0

因此,如果我们创建任意数量的对象后,根据您的第一个解释,所有将显示输出0。 –

1

由于高度限定为静态的。整个程序执行过程中只有一个“高度”。