JAVA的物件型別轉換
阿新 • • 發佈:2019-02-20
JAVA中的物件型別轉換:
一、基類物件可以指向子類物件,但是不可以訪問子類物件新新增的成員
如下在執行testFunction()的時候,先在棧記憶體裡面定義一個animal 指向堆記憶體裡面new出來的Animal物件;
然後再執行第二句將animal指向新new出來的Cat物件,而第一步new出來的Animal物件會被GC回收。在new出來
的CAT物件裡面存放著一個Animal物件name:whiteCat ;還有Cat自身的成員變數 furColor:2;但是animal是無法訪問furColor;
因為這裡把 animal當做是Animal而不是CAT。
PS:需要注意的是animal既是Animal的例項也是CAT的例項,因為例項只看你指向的物件是不是該類或其子類的物件
二、如果需要訪問CAT裡面的furColor,則需要強制型別轉換如下:<span style="white-space:pre"> </span>public class Animal(){ private name; Animal(String name){ this.name = name; } } public class Cat extends Animal{ private int furColor; Cat(String name,int fColor){ super(name); furColor = fColor; } } public void testFunction(void){ Animal animal = new Animal("a"); animal = new Cat("whiteCat", 2); }
CAT cat1 = (CAT)animal;
cat1.furColor;
以上就是OK的。