public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Animal a=new Animal("name");
Cat c=new Cat("catname", "blue");
Dog d=new Dog("dogname", "black");
System.out.println(a instanceof Animal);//true
System.out.println(c instanceof Animal);//true
System.out.println(d instanceof Animal);//true
System.out.println(a instanceof Cat);//false
a =new Dog("bigyellow", "yellow");//将子类对象看做是父类对象,也就是将基类指向其子类
//称作是向上转型
System.out.println(a.name);//bigyellow
//System.out.println(a.furColor);//这句话是错误的,a看不到furColor
System.out.println(a instanceof Dog);//true
System.out.println(a instanceof Animal);//true
Dog d1=(Dog)a;//强制转换,将a转换为Dog对象
System.out.println(d1.furColor);//yellow
}
}
class Animal{
public String name;
public Animal(String name) {
this.name=name;
}
}
class Cat extends Animal{
public String eyeColor;
public Cat(String n,String c) {
super(n);
eyeColor=c;
}
}
class Dog extends Animal{
public String furColor;
public Dog(String n,String c) {
super(n);
furColor=c;
}
}