Given:
interface Pet {
}
class Dog implements Pet {
}
public class Beagle extends Dog {
}
Which three are valid?
A.
Pet a = new Dog();
B.
Pet b = new Pet();
C.
Dog f = new Pet();
D.
Dog d = new Beagle();
E.
Pet e = new Beagle();
F.
Beagle c = new Dog();
題解
題目提供的程式,繼承關係是:「Beagle是Dog」與「Dog是Pet」,所以「Beagle是Pet」。
選項A,實體化Dog物件,並用Pet型態的物件變數儲存參考,因為「Dog是Pet」,所以這是可以的。
選項B,無法實體化Pet物件,因為Pet是介面(interface)。
選項C,無法實體化Pet物件,因為Pet是介面(interface)。
選項D,實體化Beagle物件,並用Dog型態的物件變數儲存參考,因為「Beagle是Dog」,所以這是可以的。
選項E,實體化Beagle物件,並用Pet型態的物件變數儲存參考,因為「Beagle是Pet」,所以這是可以的。
選項F,實體化Dog物件,並用Beagle型態的物件變數儲存參考,這個不行,因為「Dog不一定是Beagle」。