Il eredità nella programmazione orientato agli oggetti è un modo di organizzare gli oggetti in una gerarchia dal più generale al più specifico. È il gadget utilizzato per estendere una classe in un'altra classe, preservando un'esecuzione analoga.
Nella maggior parte dei linguaggi orientati agli oggetti basati su classi, un oggetto creato attraverso l'ereditarietà, chiamato oggetto figlio, ottiene tutte le proprietà e i comportamenti dell'oggetto genitore..
Pertanto, è una qualità che rappresenta il rapporto tra classi diverse. L'ereditarietà consente a una classe di avere lo stesso comportamento di un'altra classe e di estendere o adattare quel comportamento per fornire un'azione speciale per esigenze specifiche.
L'ereditarietà può aiutare a rappresentare oggetti che presentano alcune differenze e alcune somiglianze nel modo in cui funzionano. Puoi mettere tutte le funzionalità che gli oggetti hanno in comune in una classe base e quindi definire una o più sottoclassi con la tua funzionalità personalizzata.
Indice articolo
L'ereditarietà è una delle caratteristiche chiave della programmazione orientata agli oggetti, che viene utilizzata per definire una nuova classe dalle classi esistenti.
Cioè, nuove classi possono essere derivate da classi di base esistenti, aggiungendo nuove funzionalità. Non devi scrivere da zero. Pertanto, l'ereditarietà fornisce un modo per riutilizzare facilmente il codice esistente.
Se hai già una classe che fa quasi tutto ciò che desideri, puoi creare una sottoclasse che sovrascrive parzialmente parte del suo comportamento, o magari viene aggiunta qualche nuova funzionalità..
Una classe derivata eredita tutti i metodi della classe base, ad eccezione di quanto segue:
- Costruttori, distruttori e costruttori di copia della classe base.
- Operatori di overload della classe base.
- Funzioni amichevoli della classe base.
Come un albero genealogico, l'eredità serve a formare una gerarchia di classi. È importante notare che gli attributi determinati per una classe base saranno automaticamente presenti nella classe derivata. Inoltre, i metodi per la classe base funzioneranno per i derivati.
Si dice che una classe sia una sottoclasse della classe da cui eredita. D'altra parte, questa classe sarà la tua superclasse. La classe più generica può essere definita una classe di base, poiché è alla base della gerarchia.
L'ereditarietà è molto popolare in alcuni linguaggi con tipi statici, perché consente al programmatore di evitare alcune delle restrizioni del tipo statico.
Un oggetto che eredita da un altro oggetto è considerato un sottotipo di quell'oggetto. Un esempio potrebbero essere gli oggetti "istruttore" e "studente", ognuno dei quali eredita da "persona".
Se istruttore e studente sono dello stesso tipo di persona, puoi scrivere una funzione che accetti il tipo di persona come parametro e che funzioni sugli oggetti istruttore e studente, perché entrambi sono eredi di persona.
Quando una classe derivata eredita le proprietà e il comportamento di una singola classe base. Cioè, una classe si estende a un'altra singola classe.
Si riferisce al gadget in cui è possibile ereditare da una classe derivata, rendendo questa classe derivata la classe base per una nuova classe. Cioè, risulta quando una classe derivata viene creata da un'altra classe derivata.
In questa eredità, molte sottoclassi ereditano da una singola classe. Cioè, accade quando una singola classe base viene ereditata da più di una classe derivata.
È l'eredità risultante quando una delle tre eredità precedenti viene combinata (singola, gerarchica e multilivello).
Corrisponde alla cifra di ereditarietà quando una classe eredita da più di una superclasse. Lo svantaggio di questo tipo di ereditarietà è che la classe derivata dovrà fare i conti con la dipendenza che ha da due classi base.
D'altra parte, questo tipo di ereditarietà consente ai programmatori di erigere classi che combinano gli aspetti di più classi e le rispettive gerarchie..
Quando una classe è derivata da una classe base pubblica, i membri pubblici della classe base diventano membri pubblici della classe derivata ei membri protetti della classe base diventano membri protetti della classe derivata.
I membri privati di una superclasse non saranno mai accessibili direttamente da una classe derivata, ma sarà possibile accedervi tramite chiamate effettuate ai membri pubblici e protetti della classe base..
Quando si crea una classe che eredita da una superclasse protetta, sia i membri pubblici che quelli protetti di questa superclasse diventeranno membri protetti della classe derivata.
Quando si crea una sottoclasse da una superclasse privata, i membri pubblici e protetti di questa superclasse diventeranno membri privati della sottoclasse.
Per mostrare come funziona il principio di ereditarietà, prenderemo robot o una classe migliore di robot nel linguaggio di programmazione Python. Per fare ciò, una classe chiamata RobotMédico (PhysicianRobot), derivato dalla superclasse Robot.
Se guardi il codice della classe RobotMédico, puoi vedere che nessun attributo o metodo è stato definito in questa classe.
Poiché la classe RobotMedico è una sottoclasse di Robot, in questo caso eredita entrambi i metodi __init__ e say_hi. Ereditare questi metodi significa che possono essere utilizzati come se fossero stati definiti nella classe RobotMédico..
Quando viene creata un'istanza di RobotMédico, la funzione __init__ creerà anche un attributo name. Il metodo say_hi può essere applicato all'oggetto "y" di RobotMédico, come si può vedere nel risultato del codice precedente.
Una classe può ereditare da più di una classe, il che significa che può ereditare dati e funzioni da più superclassi. Per definire una classe derivata, viene utilizzato un elenco di derivazione della classe per specificare le classi di base.
Un elenco di derivazione di classi in C ++ nomina una o più classi di base e ha la seguente forma: classe classe derivata: identificatore di accesso classe base, in quale identificatore di accesso è pubblico, protetto o privato, Y classe base è il nome di una classe definita in precedenza. Se non utilizzato identificatore di accesso, È preso privato predefinito.
Puoi pensare alla superclasse "Forma" e alla sua classe derivata "Rettangolo" come segue:
Quando il codice precedente viene compilato ed eseguito, si verifica il seguente output: "Area totale: 35".
Nessun utente ha ancora commentato questo articolo.