您的位置:首页 > 其它

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

2016-11-22 00:32 399 查看
子类强转父类,子类 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: