数组中存放引用类型分析
- 1.代码分析
- 2.程序运行
- 3.结果分析
1.代码分析
1.源代码:
①.main函数内容:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19public 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(); } } } }
②.所涉及到的类的定义
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22class 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.程序运行
复制代码
1
2
3cat can catch mouses bird is sing
3.结果分析
复制代码
1
2
3
4
5当我们在数组中存放引用数据类型时,想要调用子类的方法,我们需要先 采用instanceof对“对象”进行类型判断,再强制向下转型才可以进行调用。 当我们调用数组中引用的共有方法时,可直接调用,例如:调用a.move()方法
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18public 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(); } } }
复制代码
1
2程序输出
复制代码
1
2
3
4
5cat is walking cat can catch mouses bird is flying bird is sing
以上内容仅为个人总结,如有不当欢迎批评指正。
最后
以上就是威武毛巾最近收集整理的关于数组中存放引用类型分析的全部内容,更多相关数组中存放引用类型分析内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复