首先大家看一下下面的代碼,大家應該還算熟悉吧,他其實就是一個匿名類。
Runnable runnable = new Runnable() {
@Override
public void run() {
for (int i = 1; i <= 20; i++) {
ad.loopA(i);
}
}
};
Runnable是一個接口,這個接口前面之所以new 了一下,並不能說明接口可以new,因爲接口裏面重寫了接口中的抽象方法run。此時表明是一個實現了接口的具體對象,只不過這個對象沒有名字,可是又奇怪了,這個runnable不是他的名字嗎,不是,這個相當於是接口的引用,這個引用指向了這個匿名對象。
上面舉得例子是接口,其實抽象類也是一樣,可以大概總結爲一句話:
一個父類的引用指向了一個子類的對象實例,這個子類沒有名字。