"instanziieren" bedeutet "Erzeuge ein Objekt von".
Sie können also keine direkt erstellen.
Der Zweck von Interfaces und abstrakten Klassen ist es, das Verhalten einiger konkreter Klassen zu beschreiben, die die Schnittstelle implementieren oder die abstrakte Klasse erweitern.
Eine Klasse, die eine Schnittstelle implementiert, kann von anderem Code verwendet werden, der nur über die Schnittstelle weiß, was Ihnen hilft, Verantwortlichkeiten zu trennen und sich darüber im Klaren zu sein, was Sie von dem Objekt erwarten. (Der aufrufende Code weiß nur, dass das Objekt alles in der Schnittstelle angegebene tun kann; es wird nichts über andere Methoden wissen.)
Wenn Sie jemand anderen Code verwenden, erwartet ein Fooable
(wo das ist Name einer Schnittstelle), Sie werden nicht wirklich nach einem Objekt einer Fooable-Klasse gefragt (weil es nicht wirklich eine solche Klasse gibt). Sie werden nur nach einer Instanz einer Klasse gefragt, die Fooable implementiert, d. H. Die erklärt, dass sie alle Dinge in dieser Schnittstelle ausführen kann. Kurz gesagt, etwas, das "foo'd" werden kann.
foo() Methode in der abstrakten Klasse implementiert erfordert Schlüsselwort abstrakt, sonst wirft es Zeitfehler kompilieren. Es sollte so sein, public abstract void foo(); – user609239