Lo so, non è possibile creare un'istanza di un'interfaccia o una classe astratta in java eccetto l'utilizzo del metodo anonimo di classe, ma qual è il motivo dietro di esso?Perché non è possibile creare un'istanza di un'interfaccia o una classe astratta in java senza un metodo di classe anonimo?
risposta
Non è possibile creare un'istanza di un'interfaccia o di una classe astratta perché sarebbe sfidare il modello orientato agli oggetti.
Le interfacce rappresentano i contratti: la promessa che l'implementatore di un'interfaccia sarà in grado di eseguire tutte queste operazioni, adempiere il contratto.
Le classi astratte sono un'idea simile, in quanto rappresentano un contratto insoddisfatto, la promessa di essere in grado di fare le cose, tranne che a differenza di interfacce che hanno alcune delle loro funzioni o campi definiti, ma hanno bisogno di riempire prima di poter utilizzare.
Semplicemente, in un buon programma orientato agli oggetti, non si dovrebbe mai voler istanziare una classe astratta o un'interfaccia. Se lo fai, probabilmente il design è sbagliato.
(Le classi anonime sono in realtà non-istanze astratte, solo che non è necessario assegnare un nome, quindi sembrano essere "interfacce raw" ma in realtà sono un'implementazione dell'interfaccia che non ha nome Almeno questa è la mia comprensione.)
Ecco una spiegazione di base senza un concetto più profondo.
Interface
non ha metodo implementato, quindi non c'è nessun scopo di creare un'istanza di esso come 'nulla' che accadrà quando invocare un metodoAbstract
classe può avereabstract
dichiarazione di metodo, che è come un metodo di interfaccia con alcuna implementazione .
Non è possibile creare un'istanza di interfacce o classi astratte perché alcuni dei loro metodi potrebbero non avere alcuna definizione.
Potrebbe chiarire che * nessuno * sarà con un'interfaccia. – ChiefTwoPencils
Le interfacce dispongono di codice da utilizzare? – ChiefTwoPencils