Beachten Sie, dass Sie ein Objekt einer abstrakten Klasse nicht erstellen können, aber Sie können immer noch ein Objekt Referenz, deren Typ eine abstrakte Klasse ist. Natürlich, auf dem das eigentliche Objekt muss eine Instanz einer konkreten Unterklasse sein bezieht:Wie können abstrakte Klassen Referenzen, aber keine Objekte haben?
Account anAccount; // OK
anAccount = new Account(); // Error—Account is abstract
anAccount = new SavingsAccount(); // OK
anAccount = null; // OK
Nicht zu verstehen, warum Sie einen Objektverweis auf einer abstrakten Klasse haben kann ...
Ok, wenn Sie Dinge wie Konto anAccount; Was sagt das? es deutet nicht auf irgendetwas hin? Auch wenn es keine abstrakte Klasse ist, sagen wir String tmp; hast du noch keine Adresse angegeben? – user2809437
@ user2809437- Das ist richtig. Wenn Sie "Account anAccount" sagen, erhalten Sie eine Referenz namens "anAccount", die anfänglich "null" enthält, was bedeutet, dass sie auf nichts zeigt. Es ist das gleiche mit 'String tmp'; Sie bekommen einen Verweis auf eine 'String', aber sie zeigt auf' null', weil Sie sie noch nicht zugewiesen haben, um auf einen 'String' zu zeigen. – templatetypedef
Noch eine Frage ... was ist der Sinn dies zu tun? Wenn Sie keine Instanz der Klasse erstellen können, warum beide mit der Referenz? – user2809437