向上转型:
平行四边形也是一种类型的四边形,所以可以将平行四边形类的对象看作是一个四边形类的对象。
这就相当于“Quadrangle obj = new Parallelogram();”,就是把子类的对象赋值给父类类型的变量,这种技术称为“向上转型”。
由于向上转型是从一个较具体的类到较抽象的类之间的转换,所以它总是安全的。(如可以说平行四边形是特殊的四边形,但是不能说四边形是平行四边形)
向下转型:
通过向上转型可以推理出向下转型是将较为抽象的类转换为具体的类。这样的转型通常会出现问题。
可以说子类对象总是父类的一个实例,但是父类对象不一定是子类的实例。
public class Parallelogram extends Quadrange{
public static void main(String args[]){
draw(new Parallelogram());
//将平行四边形类对象看做四边形对象,称为向上转型操作
Quadrangle q = new Parallelogram();
//Parallelogram p = q;
//将父类对象赋予子类对象,这种写法是错误的。
//将父类对象赋予子类对象,并强制转换为子类型,这种写法是正确的。
Parallelogram p = (Parallelogram) q;
}
}
多态:
子类的对象赋值给父类类型的变量。
如:Quadrangle q = new Square();