java学习记录10
java多态学习(二)
java通过对对象的转型实现对象的多态性,使两个不同类的的对象可以相互之间转化,类似于类型之间的转化,将不同的类型之间进行转化,具有灵活性,可替换性的特点,对象转型分为两类:1、子类对象向父类对象转型的向上型;
2、父类对象向子类对象转型的向下型。
对象向上型实例:
abstract class Animal{
abstract void animal();
}
class cat extends Animal{
@Override
void animal() {
System.out.println("猫喜欢吃鱼");
}
}
class dog extends Animal{
@Override
void animal() {
System.out.println("狗喜欢啃骨头");
}
}
class keeper{
void ain(){
Animal Cat = new cat();
Cat.animal();
Animal Dog = new dog();
Dog.animal();
}
}
在代码中先抽象父类,将实体子类对象赋给父类对象,完成向上转型。向上转型由java系统自动完成,,而向下转型则存在不确定性,直接转换可能会出现错误引用,在转换前需要进行类型判断,然后强制进行转化。
因此为了正确的进行强制转换,转化前使用instanceof运算符进行判断对象类型,如果是目标类型进行强制转换,否则不进行强制转换
Animal Cat = new cat();
cat c = null;
dog d = null;
if(Cat instanceof cat){
c = (cat) Cat;
}
else if(Cat instanceof dog){
d = (dog) Cat;
}