一、源码示例
废话不说,上代码。
package animal;
import java.util.ArrayList;
public class Animal{
String Class;
public void Show() {
System.out.println("类名:"+Class);
}
public static void main(String[] args) {
/*这是一个能够存储猫猫狗狗的数组*/
ArrayList<Animal> A = new ArrayList<Animal>();
A.add(new Dog());
A.add(new Cat("汤姆"));
/*遍历展示对象数组A*/
for(Animal a:A) {
a.Show();
/*检测类型:
* 当a是Dog类的实例时
* 执行Dog类对象独有的Bark()方法
* 如果是Cat类的实例
* 就输出Cat类对象独有的name成员
* */
if(a instanceof Dog)
((Dog) a).Bark();
if(a instanceof Cat)
System.out.println("我叫"+((Cat) a).name);
}
}
}
package animal;
public class Dog extends Animal{
Dog() {
// TODO 自动生成的构造函数存根
Class="狗";
}
public void Bark() {
System.out.println("汪汪汪");
}
}
package animal;
public class Cat extends Animal{
String name;
Cat(String n) {
name=n;
// TODO 自动生成的构造函数存根
Class="猫";
}
}
运行结果:
类名:狗 汪汪汪 类名:猫 我叫汤姆 ?
二、讲解
????????ArrayList<T>可以存储类型为T的对象,T为父类时,可以存储T的各种子类的对象。这么做的好处就是,你可以把同属于动物类的猫、狗都放入数组,并且方法和成员变量不受影响(强转后)。
|