鱼欲遇雨:每日都学习一点,持之以恒,天道酬勤!不能用电脑时,提前补上!(2012.9.6改)
一 对象转型(casting)
1 一个基类的引用类型变量可以“指向”其子类的对象
2 一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)
3 可以使用引用变量instanceof类名, 来判断该引用类型变量所“指向”的对象是否属于该类或该类的子类
4 子类对象可以当做基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting)
//TestCasting.java
class Animal {
public String name;
Animal(String name) {
this.name = name;
}
}
class Cat extends Animal {
public String eyesColor;
Cat(String n, String c) {
super(n);
this.eyesColor = c;
}
}
class Dog extends Animal {
public String furColor;
Dog(String n, String c) {
super(n);
this.furColor = c;
}
}
public class TestCasting {
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);
System.out.println(c instanceof Animal);
System.out.println(d instanceof Animal);
System.out.println(a instanceof Cat);
a = new Dog("bigyellow", "yellow");
System.out.println(a.name);
//System.out.println(a.furColor);
System.out.println(a instanceof Animal);
System.out.println(a instanceof Dog);
Dog d1 = (Dog)a;
System.out.println(d1.furColor);
}
}
部分内存分析