对象的向上转型
格式:对象的向上转型就是多态写法:
父类名称 对象名=new 子类名称();
——>父类引用指向子类对象
含义:右侧创建一个子类对象,把它当做父类来使用
注意:向上转型一定是安全的,从小范围转向了大范围
弊端:一旦向上转型为父类,就无法使用子类特有方法;如果想使用,则需要用对象的向下转型(还原)
对象的向下转型
格式:
子类名称 对象名=(子类名称) 父类对象
含义:将父类对象还原为本来的子类对象
Animal animal=new Cat();//本来是猫,向上转型为动物
Cat cat=(Cat)animal;//本来是猫,已经被当做是动物,还原回来成为本来的猫
注意:
- 必须保证对象原来创建的时候就是猫,才能向下转型成为猫
- 如果对象创建的时候不是猫,现在非要向下转型成为猫,就会报类转换异常:
ClassCastException