/*************************************
*子类型可以直接被父类型引用
*但是父类型的引用无法调用子类型自己的函数
**************************************/publicclassTest{publicstaticvoidmain(String[] args){
Hero h =newHero();
ADHero ad =newADHero();
h = ad;
h.physicAttack();//发生错误}}
父类型 转 子类型
/*************************************
*父类型转子类型需要先引用子类型
**************************************/publicclassTest{publicstaticvoidmain(String[] args){
Hero h =newHero();
ADHero ad =newADHero();
h = ad;//需要先引用
ad =(ADHero) h;//才能进行类型转换
ad.physicAttack();//可以调用}}
子类型 转 子类型
/*************************************
*子类型无法转子类型
**************************************/publicclassTest{publicstaticvoidmain(String[] args){//情景一
ADHero ad =newADHero();
APHero ap =newAPHero();
ad =(ADHero) ap;//失败//情景二
ADHero ad =newADHero();
APHero ap =newAPHero();
Hero h =newHero();
h = ad;
ad =(ADHero)h;
h = ap;
ad =(ADHero)h;//失败}}