子类强转父类以获取父类对象时被重写的静态方法的选择

子类强转父类,子类 z  = new 子类();
              父类 f  = (父类)z;
多态性的一种体现,通过子类对象获得父类对象(就好比儿子给父亲输血救命一样);但是尤其需
注意其中如果有静态方法的重写则取父类中的静态方法而非重写后的子类静态方法。
例如


public class Test {
public void a(){
System.out.println("a");
}
public static void b(){
System.out.println("b");
}
}
public class TestB extends Test{
public void a(){
System.out.println("c");
}
public static void b(){
System.out.println("d");
}
public static void main(String args[]){
TestB tb = new TestB();
Test t = (Test)tb;
t.a();
t.b();







}
}


最后输出的c ,b所以证明静态方法需取重写前的父类中原有的方法而普通方法则取到的是重写后的。
如果直接获得父类对象则输出a,b
直接获得子类对象输出c,d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值