内容转载自:http://blog.csdn.net/sheepmu/article/details/38327205
使用向下转型,提取已经向上转型的实例,会重新获得实例的内在变量及其变量值等。
如下:
1:在apple中定义变量price,并配以相应的getter和setter方法
2:在我们的test类中,首先new一个apple实例,使用set方法,设置price值,
3:利用向上转型,会丢失price变量和相应于fruit类没有的方法。
4:利用向下转型,获取原来的方法。
5:调用price的值,还是我们刚才设置的值,值没发生变化!!
添加代码如下:
apple类中
int price; public int getPrice() { return price; } public void setPrice(int price) { this.price = price; }
test类中:
Apple b = new Apple(); b.setPrice(12); Fruit a=b; //向上转型 a.myName(); //a.price; ---error Apple aa=(Apple)a; //向下转型,编译和运行皆不会出错(正确的) aa.myName();//向下转型时调用的是子类的 aa.myMore();; System.out.println(aa.price);//可以提取之前的数据!!!