L'ereditarietà consiste nell'ottenere attributi (e/o funzionalità) di super-tipi. Ad esempio:
class Base {
//interface with included definitions
}
class Derived inherits Base {
//Add some additional functionality.
//Reuse Base without having to explicitly forward
//the functions in Base
}
Qui, un Derived
non possono essere usati dove è previsto un Base
, ma è in grado di agire in modo simile a un Base
, mentre l'aggiunta di comportamento o cambiare qualche aspetto del comportamento Base
s. In genere, Base
sarebbe una piccola classe di supporto che fornisce sia un'interfaccia che un'implementazione per alcune funzionalità comunemente desiderate.
sottotipo-polimorfismo è sull'implementazione di un'interfaccia, e quindi essere in grado di sostituire diverse implementazioni di tale interfaccia in fase di esecuzione:
class Interface {
//some abstract interface, no definitions included
}
class Implementation implements Interface {
//provide all the operations
//required by the interface
}
Qui, una Implementation
può essere utilizzato ovunque sia necessario un Interface
, e diverse implementazioni possono essere sostituite in fase di esecuzione. Lo scopo è quello di consentire il codice che utilizza Interface
per essere più ampiamente utile.
La tua confusione è giustificata. Java, C# e C++ si combinano tutte queste due idee in una singola gerarchia di classi. Tuttavia, i due concetti non sono identici e esistono linguaggi che separano i due.
Dove li hai visti essere descritti come diversi? –