关于多态,可以有个结论,静态方法(fu.show())和成员变量看左边
成员方法 编译看左边 运行看右边,原因是在子类中发生了重写
public class Fu {
public int num=10;
public static void show(){
System.out.println("this is fu!");
}
public void showNum(){
System.out.println("this is zi num="+num);
}
public void methodFu(){
System.out.println("Fu 类的方法");
}
}
public class Zi extends Fu{
public int num=20;
public static void show(){
System.out.println("this is ZI!");
}
@override
public void showNum(){
System.out.println("this is zi num="+num);
}
public void methodZi(){
System.out.println("Zi 类的方法");
}
}
Fu f= new Zi();
f.num //Fu类的成员变量 10
f.showNum(); // Zi类的成员方法 20
f.methodFu(); //Fu类的方法的 现在Zi 类 查找,没有就找Fu类的
//f.methodZi(); //Zi 类的方法 编译报错
Zi zi= (Zi ) f;
zi.methodZi()
f.show(); this is fu! //调用静态方法, 谁点出来的就是谁的, 静态方法不属于对象,而是属于类
Zi.show(); this is ZI!
网友评论