对象类型的转换

发布时间 2023-11-27 10:46:06作者: 同学?

向上转型
因为平行四边形是特殊的四边形,也就是说平行四边形是四边形的一种,那么就可以将平行四边形看作是一个四边形对象
public class parallelogram extends Quadrangle{//平行四边形类继承了四边形类
public static void main(String[] args) {
parallelogram p = new parallelogram();//实例化了平行四边形类对象引用
draw(p);//调用父类方法
}
}
上例中平行四边形类继承了四边形类,四边形类存在个draw()方法,它的参数是Quadrangle类型,而在平行四边形类的主方法中调用draw()时给予的参数类型却是parallelogram类型的,这里一直强调一个问题,平行四边形也是四边形的一个类(对象),这就相当于Qudadrangle a=new parallelogram();就是把子类对象赋值给父类类型的变量,这种技术被称为向上转型,由于是从一个较具体的类到较抽象的类的转换,所以它总是安全的
向下转型
向下转型是将较抽象类转换为较具体类,这样的转型通常会出现问题例如一个四边形不一定就是指平行四边形,越是具体的对象特性越多,越抽象的对象具有的特性越少,在做向下转型操作时,将特性范围小的对象转换为特性范围大的对象肯定会出现问题,所以这是需要告知编译器这个四边形是平行四边形,将父类对象强制转换为某个子类对象,这种方式称为显式类型转换
从子类到父类的类型可以自动进行,从父类到子类的类型转换必须通过强制类型转换实现
无继承关系的引用类型间的转换是非法的
instanceof,二目运算符,该运算符是用来在运算时指出对象是否是特定类的一个实例。
用法:result=object instanceof class
如果object是class的一个实例,则运算符返回true