对象类型的转换在Java中经常遇见,主要包括了向上转型和向下转型操作。
一、向上转型
因为平行四边形是特殊的四边形,也就是说平行四边形是四边形的一种,那么就可以将平行四边形对象看作一个四边形对象,这就是向上转型(将子类对象看作是父类对象),通过下列示例来说明:
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)
}
}