java类型转化
Java中的父类/子类相互转化问题:
- 子类可以转成父类:此时子类能调用父类中定义的方法和变量,如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法
- 父类转成子类:1、如果父类引用本身是子类对象(new 子类()),可以转换;2、否则无法转换
如:
public class A { public void m() { } }
public class B extends A { public void m() { } public void m2() { } }
A a1 = new A(); B b1 = new B();
// 子类转父类
A a2 = (A) b1;
a2.m(); // a2可以调用A(子类)中定义的方法,调用a2.m2()报错
// 父类转子类
B b2 = (B) a2; // 必须a2是B对象时才可以成功转化,否则报错
b2.m(); b2.m2();