前言:众所周知,四边形包括正方形、长方形、平行四边形、菱形等图形。接下来用四边形例子来说明向上造型与向下造型。
向上造型
将一个较具体的类转换到一个较抽象的类。
//四边形类
class Quadrangle{
public static void draw(Quadrangle q){
//do something
}
}
//正方形类
class Square extends Quadrangle{
public static void main(String args[]){
Square s = new Square();//实例化s
draw(s);//调用父类方法
}
}
由于正方形也是四边形的一种,所以可以把正方形对象看作是一个四边形对象,调用四边形类的方法。
向下造型
将一个较抽象的类转换到一个较具体的类。
//四边形类
class Quadrangle{
public static void draw(Quadrangle q){
//do something
}
}
//正方形类
class Square extends Quadrangle{
public static void main(String args[]){
draw(new Square());//向上造型,将正方形对象转为四边形
Quadrangle q = new Quadrangle();//实例化q
//接下来有两种构造正方形对象s的方法
//1、将父类对象直接赋予子类,这样相当于把一个较抽象类直接转化为较具体类,会出错
Square s = q;
//2、将父类对象经过显示转换,强制转化为子类,正确
Square s = (Square)q;
}
}
总结
以正方形与四边形为例,可总结为
四边形 = 正方形; //即把正方形当做是四边形,正确,因为较具体类可以转化为较抽象类
正方形 = 四边形; //即把四边形当做是正方形,错误,因为较抽象类不可以直接转化为较具体类
正方形 = (四条边相等且每相邻的边相互垂直的)四边形 //即强制转换,正确