抽象类如何引用而不是对象?

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

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

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

当你有一个类型是抽象类的对象引用时,该引用并不意味着“我正在引用一个抽象类”。 相反,它意味着“我正在引用一些实际对象,它是该抽象类的子类。” 这就是为什么你可以让引用引用一个SavingsAccount ,它是一个非抽象类,它从Account ,但你不能让它指向一个new Account() ,因为你无法实际实例化Account

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

希望这可以帮助!

问题是你不能调用抽象成员例程。
当你调用’new’时,你实际上正在调用类的构造函数。
因为您试图调用抽象成员函数,所以会出错。

您可以引用一个抽象类,因为它只是从中派生出来的真实类的蓝图。 有点像接口但有inheritance。
就像您无法实例化接口一样,您无法实例化抽象类。

这当然是多态性的一部分。
抽象类和接口之间的差异非常小,请参阅: 接口与抽象类(通用OO)