3-12编程练习中使用instanceof运算符有什么意义?
使用instanceof进行强制类型转换判断:
for(int i=0;i<5;i++){
if(animal[i] instanceof Cat){
Cat cat=(Cat)animal[i];
cat.cry();
}
if(animal[i] instanceof Dog){
Dog dog=(Dog)animal[i];
dog.cry();
}
if(animal[i] instanceof Sheep){
Sheep sheep=(Sheep)animal[i];
sheep.cry();
}
}直接访问animal[i]的方法进行输出:
public class Test {
public static void main(String[] args) {
//生成父类对象数组,数组长度为5
Animal[] animal=new Animal[5];
//产生随机数,随机产生三种具体子类的实例
for(int i=0;i<5;i++){
int temp=(int)(Math.random()*3);
switch(temp){
case 0:{
animal[i]=new Cat();
break;
}
case 1:{
animal[i]=new Dog();
break;
}
case 2:{
animal[i]=new Sheep();
break;
}
}
}
//循环输出,循环体中每个对象分别调用cry()方法。
for(int i=0;i<5;i++){
animal[i].cry();
}
}
}循环输出的时候,只要子类重写了父类的cry方法,通过父类对象animal[i]访问到的cry方法就是它子类的cry方法吧。就像我上面写的那样,运行出来也是正确的。是不是编译器会自动判断animal[i]属于哪一个子类的储存空间?求解答,谢谢♪(・ω・)ノ
43
收起
正在回答
1回答
比如animal[i] instanceof Cat,instanceof是判断animal[i]是否为Cat类型的。
当子类重写了父类的cry()方法,父类引用指向子类对象,调用cry()方法时会调用子类重写的cry()方法,这是多态的体现。祝学习愉快~
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星