Sök…


Anmärkningar

Obs! Arv på flera nivåer är tillåtet i Java men inte flera arv. Läs mer på http://beginnersbook.com/2013/04/oops-concepts/

Arv - definition

Arv är ett av huvudbegreppen inom Objektorienterad programmering (OOP) . Med hjälp av arv kan vi modellera ett problem ordentligt och vi kan minska antalet rader vi måste skriva. Låt oss se arv med ett populärt exempel.

Tänk på att du måste modellera djurriket (Förenklad djurriket, naturligtvis. Biologer, förlåt mig) med hjälp av OOP. Det finns många djurarter, vissa har unika egenskaper, medan vissa delar samma funktioner.

Det är huvudsakliga djurfamiljer. Låt oss säga Mammals , Reptiles .

Sedan har vi barn från dessa familjer. Till exempel

  • Cat , Dog och Lion är däggdjur.
  • Cobra och Python är reptiler.

Varje djur delar några grundläggande funktioner som att eat , drink , move . Därför kan vi säga att vi kan ha en förälder som heter Animal från vilken de kan ärva de grundläggande egenskaperna.

Då delar dessa familjer också några funktioner. För ett exempel använder reptiler genomsökning för att flytta. Varje däggdjur fed milk i tidiga livsfaser.

Sedan finns det några unika funktioner för varje djur.

Tänk på om vi ska skapa dessa djurarter separat. Vi måste skriva samma kod om och om igen för alla djurarter. I stället för det använder vi arv. Vi kan modellera djurriket enligt följande:

  • Vi kan ha föräldraobjekt som heter Animal , som har grundläggande egenskaper hos alla djuren.
  • Mammal och Reptile (naturligtvis även de andra djurfamiljerna) föremål med sina gemensamma drag medan de ärver de grundläggande egenskaperna från föräldraobjektet, Animal .
  • Djurarter föremål: Cat och Dog ärver från Mammal objekt, Cobra och Python ärver från Reptile objekt, och så vidare.

I denna form kan vi minska koden vi skriver, eftersom vi inte behöver definiera grundläggande funktioner hos djur i varje djurart, eftersom vi kan definiera dem i Animal och sedan ärva dem. Samma sak gäller djurfamiljerna.

Arvsexempel - Överväg nedan två klasser

Lärarklass:

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. Båda klasserna har få gemensamma egenskaper och metoder. Således repetition av kod.
  2. Skapa en klass som innehåller de vanliga metoderna och egenskaperna.
  3. Klasserna Lärare och OfficeStaff kan ärva alla de gemensamma egenskaperna och metoderna nedanför anställdsklassen.

Medarbetarklass:

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. Lägg till enskilda metoder och egenskaper till det När vi har skapat en superklass som definierar attributen som är gemensamma för en uppsättning objekt, kan de användas för att skapa valfritt antal mer specifika underklasser
  2. Alla liknande klasser som ingenjör, rektor kan genereras som underklasser från anställdsklassen.
  3. Förälderklassen benämns superklass och den ärvda klassen är underklassen
  4. En underklass är den specialiserade versionen av en superklass - Den ärver alla instansvariabler och metoder definierade av superklassen och lägger till sina egna, unika element.
  5. Även om en underklass inkluderar alla medlemmar i dess superklass kan den inte få åtkomst till de medlemmar i superklassen som har förklarats som privat.
  6. En referensvariabel i en superklass kan tilldelas en referens till vilken underklass som härrör från den superklassen, dvs. anställd emp = ny lärare ();


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow