舉個簡單的例子吧。類A,另外一個類B繼承了類A。有如下代碼:
A a = new B() ; 這就稱父類的引用a 指向了子類的對象new B(),就是這個意思。
假如你的A是一個接口,或者抽象類,那么是不可以創建對象的,這樣寫就可以也能夠它的引用去指向他子類或者實現類的對象。這句話寫在這里感覺不明顯。
其實主要是用在方法的參數上,也就是多態性(java的三大特性之一,可想何等重要),為了讓你理解深刻,我舉個例子。
假如有一個類,這個類需要實現吃各種水果,有香蕉,蘋果,梨子等等。
我們是不是就得寫:
public void eat(Banana banana) { //.....}
public void eat(Apple apple) { //.....}
等等等等。這樣是不是很麻煩啊,但是我要是把這個方法寫成:
public void eat(Fruit fruit){//....}
這樣只要繼承Fruit或者實現Fruit接口,就都可以作為eat的參數,是不是大大簡化了編程。