È difficile indovinare la motivazione della tua domanda, quindi alcune possibili risposte potrebbero o potrebbero non indirizzare il tuo vero interesse.
Anche in alcuni linguaggi non prototipici è possibile approssimare questo effetto.
In Java, ad esempio, una classe interna anonima è molto vicina a ciò che stai descrivendo: puoi creare e creare un'istanza di una sottoclasse dell'originale, ignorando solo il metodo oi metodi che desideri. La classe risultante sarà una instanceof
della classe originale, ma non sarà la stessa classe.
Per quale motivo vorresti farlo? Con le espressioni lambda Java 8, penso che molti dei migliori casi d'uso scompaiano. Con le versioni precedenti di Java, almeno, questo può evitare una proliferazione di classi banali e di uso limitato. Cioè, quando hai un gran numero di casi d'uso correlati, che differiscono solo in un piccolo modo funzionale, puoi crearli quasi al volo (quasi), con la differenza comportamentale iniettata nel momento in cui ne hai bisogno.
Detto questo, anche pre-J8, questo può essere spesso rifattorizzato per spostare la differenza in un campo o tre e iniettarli nel costruttore. Con J8, ovviamente, il metodo stesso può essere iniettato nella classe, anche se potrebbe esserci la tentazione di farlo quando un altro refactoring può essere più pulito (se non così bello).