public class TestPolym {
public static void main(String[] args) {
Animal a1=new Animal();
animalCry(a1);
static void animalCry(Animal a1) {
a1.shout();
}
}
class Animal{
public void shout() {
System.out.println("嘤嘤嘤嘤");
}
}
代码中animalCry();方法是静态的,他为什么可以调用Anima类中的shout();方法。

解决方案 »

  1.   

    因为你在调用animalCry的时候已经传进去了一个实例对象了所以可以调用
      

  2.   

    传入对象a1 我并没有建关于Animal类的构造方法这个a1还能指对象吗
      

  3.   

    写错了,如果static void animalCry(Animal a1) {
    a1.shout(); a1换成a 也可以好像 a没有构造器建立对象啊
      

  4.   

    传入对象a1 我并没有建关于Animal类的构造方法这个a1还能指对象吗
    你这个无论a还是a4指向的都是同一个对象
      

  5.   

    晕,你代码都写错,少写了一个括号
    public class TestPolym { public static void main(String[] args) {
    Animal a1=new Animal();
    animalCry(a1);
    }static void animalCry(Animal a) {      //为了方便解释,把这里的参数改成 a
    a1.shout();
    }
    }class Animal{
    public void shout() {
    System.out.println("嘤嘤嘤嘤");
    }
    }
    方法参数的意义是:已经假定(你有这个变量且已经初始化),你可以在你描述的方法括号里随意使用 ,只是到时调用传参才是真正初始化赋值。
    在你定义 animalCry(Animal a)方法   你可以理解为在括号里 “a引用” 已经初始化 是一个Animal对象了,所以当然可以使用Animal里面的方法。
      

  6.   

    传入对象a1 我并没有建关于Animal类的构造方法这个a1还能指对象吗Animal类默认有空参构造,可以调用