比方說,我有一個超類Animal
,以及Dog
的一個子類。爲什麼在java中這是不允許的?
我們可以上溯造型說:
Animal a = new Dog();
我們不能說垂頭喪氣:
Dog b = new Animal();
所以我也明白,一個動物不一定是狗。但是,爲什麼要在狗容器中製作動物「藍圖」會引發異常?因爲Dog繼承了Animal的方法,所以當我們把這個動物放進一個狗容器時,我們知道Dog繼承/覆蓋了Animal所有的方法,那麼爲什麼Java不允許這樣呢?
謝謝!
想一想,當你說動物時,你不能自動承擔它的狗。但你可以反過來 –