Ricerca…
Osservazioni
Nota: l'ereditarietà a più livelli è consentita in Java ma non in ereditarietà multipla. Scopri di più su http://beginnersbook.com/2013/04/oops-concepts/
Eredità - Definizione
L'ereditarietà è uno dei concetti principali della programmazione orientata agli oggetti (OOP) . Usando l'ereditarietà, possiamo modellare correttamente un problema e possiamo ridurre il numero di linee che dobbiamo scrivere. Vediamo l'ereditarietà usando un esempio popolare.
Considera che devi modellare il regno animale (regno animale semplificato, ovviamente, i biologi, scusami) usando OOP. Ci sono molte specie di animali, alcune hanno caratteristiche uniche, mentre altre condividono le stesse caratteristiche.
Ci sono le principali famiglie di animali. Diciamo, Mammals , Reptiles .
Poi abbiamo figli di quelle famiglie. Per un esempio,
-
Cat,DogeLionsono mammiferi. -
CobraePythonsono rettili.
Ogni animale condivide alcune caratteristiche di base come eat , drink , move . Quindi possiamo dire che possiamo avere un genitore chiamato Animal da cui possono ereditare quelle caratteristiche di base.
Quindi anche quelle famiglie condividono alcune caratteristiche. Per un esempio i rettili usano la scansione per spostarsi. Ogni mammifero viene fed milk nelle prime fasi della vita.
Poi ci sono alcune caratteristiche uniche per ogni animale.
Considera se dobbiamo creare queste specie animali separatamente. Dobbiamo scrivere più volte lo stesso codice in ogni specie animale. Invece di quello, usiamo l'ereditarietà. Possiamo modellare il regno animale come segue:
- Possiamo avere un oggetto genitore chiamato
Animal, che ha caratteristiche di base di tutti gli animali. -
MammaleReptile(ovviamente anche le altre famiglie di animali) oggetti con le loro caratteristiche comuni mentre ereditano le caratteristiche di base dall'oggetto genitore,Animal. - Oggetti di specie animali:
CateDogereditano dall'oggettoMammal,CobraePythonereditano dall'oggettoReptile, e così via.
In questa forma possiamo ridurre il codice che scriviamo, poiché non è necessario definire le caratteristiche di base degli animali in ogni specie animale, poiché possiamo definirli nell'oggetto Animal e quindi ereditarli. La stessa cosa vale per le famiglie di animali.
Esempio di successione - Considerare sotto due classi
Classe dell'insegnante:
class Teacher {
private String name;
private double salary;
private String subject;
public Teacher (String tname) {
name = tname;
}
public String getName() {
return name;
}
private double getSalary() {
return salary;
}
private String getSubject() {
return subject;
}
}
Classe OfficeStaff:
class OfficeStaff{
private String name;
private double salary;
private String dept;
public OfficeStaff (String sname) {
name = sname;
}
public String getName() {
return name;
}
private double getSalary() {
return salary;
}
private String getDept () {
return dept;
}
}
- Entrambe le classi condividono poche proprietà e metodi comuni. Quindi ripetizione del codice.
- Creazione di una classe che contiene i metodi e le proprietà comuni.
- Le classi Teacher e OfficeStaff possono ereditare tutte le proprietà e i metodi comuni dalla classe Employee.
Classe dei dipendenti:
class Employee{
private String name;
private double salary;
public Employee(String ename){
name=ename;
}
public String getName(){
return name;
}
private double getSalary(){
return salary;
}
}
- Aggiungi metodi e proprietà individuali ad esso Una volta creata una super classe che definisce gli attributi comuni a un insieme di oggetti, può essere usata per creare qualsiasi numero di sottoclassi più specifiche
- Classi simili come Engineer, Principal possono essere generati come sottoclassi dalla classe Employee.
- La classe genitore è definita super classe e la classe ereditata è la sottoclasse
- Una sottoclasse è la versione specializzata di una super classe: eredita tutte le variabili di istanza e i metodi definiti dalla super classe e aggiunge i propri elementi unici.
- Sebbene una sottoclasse includa tutti i membri della sua super classe, non può accedere a quei membri della super classe che sono stati dichiarati come privati.
- Una variabile di riferimento di una super classe può essere assegnata a un riferimento a qualsiasi sottoclasse derivata da quella super classe es. Employee emp = new Teacher ();