Zoeken…


Opmerkingen

Opmerking: overerving op meerdere niveaus is toegestaan in Java, maar niet overerving op meerdere niveaus. Meer informatie op http://beginnersbook.com/2013/04/oops-concepts/

Overerving - Definitie

Overerving is een van de belangrijkste concepten in Object Oriented Programming (OOP) . Met behulp van overerving kunnen we een probleem goed modelleren en kunnen we het aantal regels verminderen dat we moeten schrijven. Laten we overerving aan de hand van een populair voorbeeld bekijken.

Overweeg dat je het dierenrijk moet modelleren (Vereenvoudigd dierenrijk natuurlijk. Biologen, neem me niet kwalijk) met behulp van OOP. Er zijn veel soorten dieren, sommige hebben unieke kenmerken, terwijl sommige dezelfde kenmerken delen.

Er zijn hoofdfamilies van dieren. Laten we zeggen, Mammals , Reptiles .

Dan hebben we kinderen van die families. Bijvoorbeeld,

  • Cat , Dog en Lion zijn zoogdieren.
  • Cobra en Python zijn reptielen.

Elk dier deelt een aantal basisfuncties zoals eat , drink , move . Daarom kunnen we zeggen dat we een ouder kunnen hebben die Animal heet, van wie ze die basiskenmerken kunnen erven.

Dan delen die families ook enkele functies. Voor een voorbeeld gebruiken reptielen kruipen om te bewegen. Elk zoogdier fed milk in vroege levensfasen.

Dan zijn er enkele unieke functies voor elk dier.

Overweeg of we deze diersoorten afzonderlijk moeten maken. We moeten bij elke diersoort steeds opnieuw dezelfde code schrijven. In plaats daarvan gebruiken we erfenis. We kunnen het dierenrijk als volgt modelleren:

  • We kunnen ouderobject Animal , dat basiskenmerken van alle dieren heeft.
  • Mammal en Reptile (natuurlijk ook de andere dierfamilies) hebben objecten met hun gemeenschappelijke kenmerken, terwijl ze de basiskenmerken van het bovenliggende object, Animal , erven.
  • Objecten voor diersoorten: Cat en Dog erven van Mammal object, Cobra en Python erven van Reptile object, enzovoort.

In deze vorm kunnen we de code die we schrijven verminderen, omdat we geen basiskenmerken van dieren in elke diersoort hoeven te definiëren, omdat we ze kunnen definiëren in het object Animal en ze vervolgens kunnen erven. Hetzelfde geldt voor de dierenfamilies.

Voorbeeld van overerving - Beschouw hieronder twee klassen

Lerarenklasse:

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;
       }
    }

OfficeStaff Class:

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;
   }
}
  1. Beide klassen delen weinig gemeenschappelijke eigenschappen en methoden. Dus herhaling van code.
  2. Een klasse maken die de algemene methoden en eigenschappen bevat.
  3. De klassen Teacher en OfficeStaff kunnen alle gemeenschappelijke eigenschappen en methoden van de klasse Employee overnemen.

Werknemersklasse:

class Employee{
   private String name;
   private double salary;
   public Employee(String ename){
      name=ename;
   }
   public String getName(){
      return name;
   }
   private double getSalary(){
      return salary;
   } 
}
  1. Voeg individuele methoden en eigenschappen toe Nadat we een superklasse hebben gemaakt die de kenmerken definieert die gemeenschappelijk zijn voor een set objecten, kan deze worden gebruikt om een aantal meer specifieke subklassen te maken
  2. Alle vergelijkbare klassen zoals Engineer, Principal kunnen worden gegenereerd als subklassen van de klasse Employee.
  3. De bovenliggende klasse wordt superklasse genoemd en de overgeërfde klasse is de subklasse
  4. Een subklasse is de gespecialiseerde versie van een superklasse - deze neemt alle instantievariabelen en methoden over die door de superklasse zijn gedefinieerd en neemt zijn eigen, unieke elementen toe.
  5. Hoewel een subklasse alle leden van zijn superklasse omvat, heeft deze geen toegang tot die leden van de superklasse die als privé zijn verklaard.
  6. Een referentievariabele van een superklasse kan worden toegewezen aan een verwijzing naar elke subklasse die is afgeleid van die superklasse, dat wil zeggen Werknemer emp = new Teacher ();


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow