Поиск…


замечания

Примечание. Многоуровневое наследование разрешено в Java, но не множественное наследование. Узнайте больше на http://beginnersbook.com/2013/04/oops-concepts/

Наследование - определение

Наследование является одной из основных концепций объектно-ориентированного программирования (ООП) . Используя наследование, мы можем правильно моделировать проблему, и мы можем уменьшить количество строк, которые мы должны написать. Давайте посмотрим на наследование, используя популярный пример.

Подумайте, вы должны моделировать животное царство (Упрощенное животное царство, конечно, биологов, простите меня) с помощью ООП. Существует множество видов животных, некоторые из которых обладают уникальными особенностями, в то время как некоторые из них имеют одни и те же особенности.

Там есть основные семьи животных. Скажем, Mammals , Reptiles .

Тогда у нас есть дети из этих семей. Например,

  • Cat , Dog и Lion - млекопитающие.
  • Cobra и Python - рептилии.

Каждое животное разделяет некоторые основные функции, такие как eat , drink , move . Следовательно, мы можем сказать, что у нас может быть родитель, называемый Animal из которого они могут наследовать эти основные функции.

Тогда эти семьи также имеют некоторые особенности. Например, рептилии используют обход для перемещения. Каждому млекопитающему fed milk на ранних этапах жизни.

Тогда есть некоторые уникальные особенности для каждого животного.

Подумайте, будем ли мы создавать эти виды животных отдельно. Мы должны писать один и тот же код снова и снова у каждого вида животных. Вместо этого мы используем наследование. Мы можем моделировать Королевство животных следующим образом:

  • Мы можем иметь родительский объект под названием Animal , который имеет основные черты всех животных.
  • Mammal и Reptile (конечно, другие семейства животных также) объекты с их общими чертами, наследуя основные функции от родительского объекта, Animal .
  • Объекты вида животных: Cat и Dog наследуют объект Mammal , Cobra и Python наследуют объект Reptile и т. Д.

В этой форме мы можем уменьшить код, который мы пишем, поскольку нам не нужно определять основные свойства животных у каждого вида животных, так как мы можем определить их в объекте Animal а затем наследовать их. То же самое происходит с животными семействами.

Пример наследования - рассмотрим ниже два класса

Класс учителя:

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  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. Оба класса имеют несколько общих свойств и методов. Таким образом, повторение кода.
  2. Создание класса, который содержит общие методы и свойства.
  3. Классы Teacher и OfficeStaff могут наследовать все общие свойства и методы ниже класса Employee.

Класс сотрудника:

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. Добавьте к нему отдельные методы и свойства. Как только мы создали суперкласс, который определяет атрибуты, общие для набора объектов, его можно использовать для создания любого количества более конкретных подклассов
  2. Любые подобные классы, такие как Engineer, Principal, могут быть сгенерированы как подклассы из класса Employee.
  3. Родительский класс называется суперклассом, а унаследованный класс - подкласс
  4. Подкласс - это специализированная версия суперкласса - он наследует все переменные экземпляра и методы, определенные суперклассом, и добавляет свои уникальные элементы.
  5. Хотя дополнительный класс включает всех членов его суперкласса, он не может получить доступ к тем членам суперкласса, которые были объявлены как закрытые.
  6. Контрольную переменную суперкласса можно присвоить ссылке на любой подкласс, полученный из этого суперкласса, т.е. Employee emp = new Teacher ();


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow