JAVA 多态-向下转型

问题

在上面的例子中,我们发现,父类的引用,有时不能调用子类的方法,也不能访问子类的成员变量,为了解决此问题,可以用 向下转型

定义

把引用类型 转换为子类类型,则称为向下转型

Java允许 直接 或 间接 继承 关系的类之间进行 类型转换。对于向下转型,必须进行强制类型转换;对于向上转型,不必使用强制类型转换。

格式

子类名称 对象名=(子类名称)父类对象名;

例子

class Wangjianlin{
    double money=1000;
}

class Wangsicong extends Wangjianlin{
    double money=500;
    int gfnum=2;
}

测试:

Wangjianlin wang=new Wangsicong();
Wangsicong wsc=(Wangsicong)wang;

System.out.println(wsc.money);
System.out.println(wsc.gfnum);

执行结果:

500
2

注意:父类对象名 ,必须指向子类

例子

class Wangjianlin{
}

class Wangsicong extends Wangjianlin{
}

class Wangxiaocong extends Wangjianlin{
}

测试:

Wangjianlin wang=new Wangsicong();
Wangxiaocong wsc=(Wangxiaocong)wang;//报错,因为wang指向的是Wangsicong的对象