Szukaj…


Uwagi

Uwaga: w Javie dozwolone jest dziedziczenie wielopoziomowe, ale nie wielokrotne dziedziczenie. Dowiedz się więcej na http://beginnersbook.com/2013/04/oops-concepts/

Dziedziczenie - definicja

Dziedziczenie jest jedną z głównych koncepcji programowania obiektowego (OOP) . Korzystając z dziedziczenia, możemy poprawnie modelować problem i możemy zmniejszyć liczbę wierszy, które musimy napisać. Zobaczmy dziedziczenie na popularnym przykładzie.

Rozważ, że musisz modelować królestwo zwierząt (Uproszczone królestwo zwierząt, oczywiście. Biolodzy, wybacz mi) za pomocą OOP. Istnieje wiele gatunków zwierząt, niektóre mają unikalne cechy, a niektóre mają te same cechy.

Istnieją główne rodziny zwierząt. Powiedzmy, Mammals , Reptiles .

Mamy dzieci z tych rodzin. Dla przykładu,

  • Cat , Dog i Lion to ssaki.
  • Cobra i Python to gady.

Każde zwierzę ma kilka podstawowych cech, takich jak eat , drink , move . Dlatego możemy powiedzieć, że możemy mieć rodzica o imieniu Animal od którego mogą odziedziczyć te podstawowe cechy.

Następnie rodziny te mają również pewne funkcje. Na przykład gady poruszają się za pomocą indeksowania . Każdy ssak fed milk jest fed milk we wczesnych stadiach życia.

Następnie istnieją unikalne cechy dla każdego zwierzęcia.

Zastanów się, czy mamy stworzyć te gatunki zwierząt osobno. Musimy ciągle pisać ten sam kod dla każdego gatunku zwierząt. Zamiast tego używamy dziedziczenia. Możemy modelować Królestwo Zwierząt w następujący sposób:

  • Możemy mieć Obiekt nadrzędny o nazwie Animal , który ma podstawowe cechy wszystkich zwierząt.
  • Mammal i Reptile (oczywiście także inne rodziny zwierząt) mają wspólne cechy, a jednocześnie dziedziczą podstawowe cechy po obiekcie nadrzędnym, Animal .
  • Obiekty gatunków zwierząt: Cat i Dog dziedziczą po obiektach Mammal , Cobra i Python dziedziczą po obiektach Reptile i tak dalej.

W tej formie możemy zmniejszyć kod, który piszemy, ponieważ nie musimy definiować podstawowych cech zwierząt w każdym gatunku zwierząt, ponieważ możemy je zdefiniować w obiekcie Animal a następnie je odziedziczyć. To samo dotyczy rodzin zwierząt.

Przykład dziedziczenia - Rozważ poniżej dwie klasy

Klasa nauczyciela:

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

Klasa 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;
   }
}
  1. Obie klasy mają kilka wspólnych właściwości i metod. Zatem powtórzenie kodu.
  2. Tworzenie klasy zawierającej wspólne metody i właściwości.
  3. Klasy Teacher i OfficeStaff mogą dziedziczyć wszystkie typowe właściwości i metody z poniższej klasy Employee.

Klasa pracownika:

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. Dodaj do niego poszczególne metody i właściwości Po utworzeniu superklasy, która definiuje atrybuty wspólne dla zestawu obiektów, można jej użyć do utworzenia dowolnej liczby bardziej szczegółowych podklas
  2. Wszelkie podobne klasy, takie jak Inżynier, Główny mogą być generowane jako podklasy z klasy Pracownik.
  3. Klasa nadrzędna jest nazywana superklasą, a dziedziczona klasa jest podklasą
  4. Podklasa jest wyspecjalizowaną wersją superklasy - dziedziczy wszystkie zmienne instancji i metody zdefiniowane przez superklasę oraz dodaje własne, unikalne elementy.
  5. Chociaż podklasa obejmuje wszystkich członków swojej nadklasy, nie może uzyskać dostępu do tych członków nadklasy, które zostały zadeklarowane jako prywatne.
  6. Zmienna referencyjna superklasy może być przypisana do odwołania do dowolnej podklasy pochodzącej z tej superklasy, tj. Employee emp = new Teacher ();


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow