1.什么时候需要用到强制类型转换

当把子类变量赋给父类引用变量时,这个父类引用变量只能调用父类拥有的方法,

不能调用子类特有的方法,即使它实际引用的是子类变量。

如果需要让这个父类引用变量调用它子类的方法,就必须把它强制转换成子类类型。

2.引用类型之间要强制转换成功需要有什么条件

把父类实例转换成子类类型,则这个对象必须实际上是子类实例才行,否则将在运行时引发ClassCastException。

3.让程序更健壮的写法:

在强制转换前使用instanceof运算符判断是否可以成功转换。

示例如下:

class Base
{
    private int value;
    public void say()
    {
        System.out.println("Base class");
    }
}

class Sub extends Base
{
    public void say()
    {
        System.out.println("Sub class");
    }
    //子类的特有方法
    public void read()
    {
        System.out.println("Are you sleeping?");
    }
}
public class Test 
{
    public static void main(String[] args) 
    {
        Base base=new Sub();
        base.say();//多态,会调用子类的方法

        if(base instanceof Sub)//先判断能否转换成功
        {
            ((Sub)base).read();//强转过后才可以调用read方法
        }

    }
}