1. 程式人生 > >JAVA的物件型別轉換

JAVA的物件型別轉換

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的例項,因為例項只看你指向的物件是不是該類或其子類的物件

<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裡面的furColor,則需要強制型別轉換如下:

CAT cat1 = (CAT)animal;

cat1.furColor;

以上就是OK的。