请注意,您不能构造抽象类的对象,但是仍然可以有一个对象
类型为抽象类的引用。当然,它所指的实际对象必须是
具体子类的实例:

Account anAccount; // OK
anAccount = new Account(); // Error—Account is abstract
anAccount = new SavingsAccount(); // OK
anAccount = null; // OK

不明白为什么可以有一个对抽象类的对象引用...

最佳答案

当您具有类型为抽象类的对象引用时,该引用并不意味着“我正在引用抽象类”。相反,它的意思是“我正在引用某个实际对象,该对象是该抽象类的子类。”这就是为什么可以让引用引用SavingsAccount的原因,它是Account的子类的非抽象类,但是由于它实际上不能实例化new Account(),所以不能将其指向Account

请注意,引用本身不是抽象类的实际实例。

希望这可以帮助!

10-08 01:59