对象类型的转换

向上转型

因为平行四边形是特殊的四边形,也就是说平行四边形是四边形的一种,那么就可以将平行四边形对象看做是一个四边形对象

例题

创建Parallelogram类,在创建Quadrangle类
class Quadrangle { // 四边形类
    public static void draw(Quadrangle q) { // 四边形类中的方法
        // SomeSentence
    }
}

public class Parallelogram extends Quadrangle { // 平行四边形类,继承了四边形类
    public static void main(String args[]) {
        Parallelogram p = new Parallelogram(); // 实例化平行四边形类对象引用
        draw(p); // 调用父类方法
    }
}

向下转型

是将抽象的类转换为较具体的类。这样的转型通常会出现问题。

例题

修改上面的例题。
class Quadrangle { // 四边形类
    public static void draw(Quadrangle q) { // 四边形类中的方法
        // SomeSentence
    }
}

public class Parallelogram extends Quadrangle { // 平行四边形类,继承了四边形类
    public static void main(String args[]) {
        draw(new Parallelogram());
        //将平行四边形类对象看作是四边形对象,称为向上转型操作
        Quadrangle q = new Parallelogram();
        //Parallelogram p = q;
        //将父类对象赋予子类对象,这种写法是错误的
        //将父类对象赋予子类对象,并强制转换为子类型,这种写法是正确的
        Parallelogram p = (Parallelogram)q;
    }
}

你可能感兴趣的:(对象类型的转换)