抽象类如何引用但不引用对象?

use*_*437 10 java polymorphism class abstract

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

Account anAccount; // OK
anAccount = new Account(); // Error—Account is abstract
anAccount = new SavingsAccount(); // OK
anAccount = null; // OK
Run Code Online (Sandbox Code Playgroud)

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

tem*_*def 13

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

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

希望这可以帮助!

  • @user2809437- 假设您想操作一个帐户,但不确定是哪种帐户。可能是“SavingsAccount”,或者可能是“CheckingAccount”、“MoneyMarketAccount”、“TreasuryAccount”等。拥有“Account”类型的引用意味着您可以拥有一个存储对象引用的变量这些类型中的任何一种,这使得编写适用于“一般帐户”的代码成为可能,而无需为这些类型的帐户中的每一种复制代码。 (2认同)