概述
数组中存放引用类型分析
- 1.代码分析
- 2.程序运行
- 3.结果分析
1.代码分析
1.源代码:
①.main函数内容:
public class Test01 {
public static void main(String[] args) {
Cat c = new Cat();
Bird b = new Bird();
Animal[] a = { c, b };
for (int i = 0; i < a.length; i++) {
if (a[i] instanceof Cat) {
// 调用子类方法需要强制向下转型
// 不能直接调用会报错
Cat cat = (Cat) a[i];
cat.catchmouse();
} else if (a[i] instanceof Bird) {
Bird bird = (Bird) a[i];
bird.sing();
}
}
}
}
②.所涉及到的类的定义
class Animal {
public void move() {
System.out.println("Animal move..");
}
}
class Cat extends Animal {
public void move() {
System.out.println("cat is walking");
}
public void catchmouse() {
System.out.println("cat can catch mouses");
}
}
class Bird extends Animal {
public void move() {
System.out.println("bird is flying");
}
public void sing() {
System.out.println("bird is sing");
}
}
2.程序运行
cat can catch mouses
bird is sing
3.结果分析
当我们在数组中存放引用数据类型时,想要调用子类的方法,我们需要先
采用instanceof对“对象”进行类型判断,再强制向下转型才可以进行调用。
当我们调用数组中引用的共有方法时,可直接调用,例如:调用a.move()方法
public static void main(String[] args) {
Cat c = new Cat();
Bird b = new Bird();
Animal[] a = { c, b };
for (int i = 0; i < a.length; i++) {
a[i].move();
if (a[i] instanceof Cat) {
// 调用子类方法需要强制向下转型
// 不能直接调用会报错
Cat cat = (Cat) a[i];
cat.catchmouse();
} else if (a[i] instanceof Bird) {
Bird bird = (Bird) a[i];
bird.sing();
}
}
}
程序输出
cat is walking
cat can catch mouses
bird is flying
bird is sing
以上内容仅为个人总结,如有不当欢迎批评指正。
最后
以上就是威武毛巾为你收集整理的数组中存放引用类型分析的全部内容,希望文章能够帮你解决数组中存放引用类型分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复