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();方法。
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();方法。
a1.shout(); a1换成a 也可以好像 a没有构造器建立对象啊
你这个无论a还是a4指向的都是同一个对象
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里面的方法。