Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Ява — наследование

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

Класс, который наследует свойства другого, называется подклассом (производным классом, дочерним классом), а класс, свойства которого унаследованы, называется суперклассом (базовым классом, родительским классом).

расширяет ключевое слово

расширяется ключевое слово, используемое для наследования свойств класса. Ниже приведен синтаксис ключевого слова extends.

Синтаксис

class Super {
   .....
   .....
}
class Sub extends Super {
   .....
   .....
}

Пример кода

Ниже приведен пример, демонстрирующий наследование Java. В этом примере вы можете наблюдать два класса, а именно Calculation и My_Calculation.

Используя ключевое слово extends, My_Calculation наследует методы add() и Subtraction() класса Calculation.

Скопируйте и вставьте следующую программу в файл с именем My_Calculation.java

Пример

Живая демонстрация
class Calculation {
   int z;
	
   public void addition(int x, int y) {
      z = x + y;
      System.out.println("The sum of the given numbers:"+z);
   }
	
   public void Subtraction(int x, int y) {
      z = x - y;
      System.out.println("The difference between the given numbers:"+z);
   }
}

public class My_Calculation extends Calculation {
   public void multiplication(int x, int y) {
      z = x * y;
      System.out.println("The product of the given numbers:"+z);
   }
	
   public static void main(String args[]) {
      int a = 20, b = 10;
      My_Calculation demo = new My_Calculation();
      demo.addition(a, b);
      demo.Subtraction(a, b);
      demo.multiplication(a, b);
   }
}

Скомпилируйте и выполните приведенный выше код, как показано ниже.

javac My_Calculation.java
java My_Calculation

После выполнения программы она даст следующий результат —

Вывод

The sum of the given numbers:30
The difference between the given numbers:10
The product of the given numbers:200

В данной программе, когда объект My_Calculation создается класс, внутри него делается копия содержимого суперкласса. Вот почему, используя объект подкласса, вы можете получить доступ к членам суперкласса.

Ссылочная переменная суперкласса может содержать объект подкласса, но с помощью этой переменной вы можете получить доступ только к членам суперкласса, поэтому для доступа к членам обоих классов рекомендуется всегда создавать ссылочную переменную для подкласса.

Если вы рассмотрите приведенную выше программу, вы можете создать экземпляр класса, как показано ниже. Но используя ссылочную переменную суперкласса ( cal в этом случае) вы не можете вызвать метод multiplication() , принадлежащий подклассу My_Calculation.

Calculation demo = new My_Calculation();
demo.addition(a, b);
demo.Subtraction(a, b);

Примечание − Подкласс наследует все элементы (поля, методы и вложенные классы) от своего суперкласса. Конструкторы не являются членами, поэтому они не наследуются подклассами, но конструктор суперкласса может быть вызван из подкласса.

Суперключевое слово

супер ключевое слово похоже на это ключевое слово. Ниже приведены сценарии, в которых используется ключевое слово super.

Различие участников

Если класс наследует свойства другого класса. И если члены суперкласса имеют такие же имена, как и подкласс, чтобы различать эти переменные, мы используем ключевое слово super, как показано ниже.

super.variable
super.method();

Пример кода

В этом разделе представлена ​​программа, демонстрирующая использование super ключевое слово.

В данной программе у вас есть два класса, а именно Sub_class. и Суперкласс , у обоих есть метод с именем display() с разными реализациями и переменная с именем num с разными значениями. Мы вызываем метод display() обоих классов и печатаем значение переменной num обоих классов. Здесь вы можете заметить, что мы использовали ключевое слово super, чтобы отличать членов суперкласса от подкласса.

Скопируйте и вставьте программу в файл с именем Sub_class.java.

Пример

Живая демонстрация
class Super_class {
   int num = 20;

   // display method of superclass
   public void display() {
      System.out.println("This is the display method of superclass");
   }
}

public class Sub_class extends Super_class {
   int num = 10;

   // display method of sub class
   public void display() {
      System.out.println("This is the display method of subclass");
   }

   public void my_method() {
      // Instantiating subclass
      Sub_class sub = new Sub_class();

      // Invoking the display() method of sub class
      sub.display();

      // Invoking the display() method of superclass
      super.display();

      // printing the value of variable num of subclass
      System.out.println("value of the variable named num in sub class:"+ sub.num);

      // printing the value of variable num of superclass
      System.out.println("value of the variable named num in super class:"+ super.num);
   }

   public static void main(String args[]) {
      Sub_class obj = new Sub_class();
      obj.my_method();
   }
}

Скомпилируйте и выполните приведенный выше код, используя следующий синтаксис.

javac Super_Demo
java Super

Выполнив программу, вы получите следующий результат —

Вывод

This is the display method of subclass
This is the display method of superclass
value of the variable named num in sub class:10
value of the variable named num in super class:20

Вызов конструктора суперкласса

Если класс наследует свойства другого класса, подкласс автоматически получает конструктор по умолчанию суперкласса. Но если вы хотите вызвать параметризованный конструктор суперкласса, вам нужно использовать ключевое слово super, как показано ниже.

super(values);

Пример кода

Программа, приведенная в этом разделе, демонстрирует, как использовать ключевое слово super для вызова параметризованного конструктора суперкласса. Эта программа содержит суперкласс и подкласс, где суперкласс содержит параметризованный конструктор, который принимает целочисленное значение, и мы использовали ключевое слово super для вызова параметризованного конструктора суперкласса.

Скопируйте и вставьте следующую программу в файл с именем Subclass.java

Пример

Живая демонстрация
class Superclass {
   int age;

   Superclass(int age) {
      this.age = age; 		 
   }

   public void getAge() {
      System.out.println("The value of the variable named age in super class is: " +age);
   }
}

public class Subclass extends Superclass {
   Subclass(int age) {
      super(age);
   }

   public static void main(String args[]) {
      Subclass s = new Subclass(24);
      s.getAge();
   }
}

Скомпилируйте и выполните приведенный выше код, используя следующий синтаксис.

javac Subclass
java Subclass

Выполнив программу, вы получите следующий результат —

Вывод

The value of the variable named age in super class is: 24

ЯВЛЯЕТСЯ отношениями

IS-A — это способ сказать:этот объект является типом того объекта. Давайте посмотрим, как расширяется ключевое слово используется для достижения наследования.

public class Animal {
}

public class Mammal extends Animal {
}

public class Reptile extends Animal {
}

public class Dog extends Mammal {
}

Теперь, основываясь на приведенном выше примере, в объектно-ориентированных терминах верно следующее —

Теперь, если мы рассмотрим отношения IS-A, мы можем сказать -

При использовании ключевого слова extends подклассы смогут наследовать все свойства суперкласса, кроме частных свойств суперкласса.

Мы можем убедиться, что млекопитающее на самом деле является животным, используя оператор экземпляра.

Пример

Живая демонстрация
class Animal {
}

class Mammal extends Animal {
}

class Reptile extends Animal {
}

public class Dog extends Mammal {

   public static void main(String args[]) {
      Animal a = new Animal();
      Mammal m = new Mammal();
      Dog d = new Dog();

      System.out.println(m instanceof Animal);
      System.out.println(d instanceof Mammal);
      System.out.println(d instanceof Animal);
   }
}

Это даст следующий результат —

Вывод

true
true
true

Поскольку мы хорошо разбираемся в extends ключевое слово, давайте посмотрим, как реализует ключевое слово используется для получения отношения IS-A.

Как правило, приспособления ключевое слово используется с классами для наследования свойств интерфейса. Интерфейсы никогда не могут быть расширены классом.

Пример

public interface Animal {
}

public class Mammal implements Animal {
}

public class Dog extends Mammal {
}

Экземпляр ключевого слова

Давайте воспользуемся экземпляром чтобы определить, является ли Млекопитающее на самом деле Животным, а собака — Животным.

Пример

Живая демонстрация
interface Animal{}
class Mammal implements Animal{}

public class Dog extends Mammal {

   public static void main(String args[]) {
      Mammal m = new Mammal();
      Dog d = new Dog();

      System.out.println(m instanceof Animal);
      System.out.println(d instanceof Mammal);
      System.out.println(d instanceof Animal);
   }
}

Это даст следующий результат —

Вывод

true
true
true

ИМЕЕТ-ОТНОШЕНИЕ

Эти отношения в основном основаны на использовании. Это определяет, является ли определенный класс HAS-A определенная вещь. Эта взаимосвязь помогает уменьшить дублирование кода, а также количество ошибок.

Давайте рассмотрим пример —

Пример

public class Vehicle{}
public class Speed{}

public class Van extends Vehicle {
   private Speed sp;
} 

Это показывает, что класс Van HAS-A Speed. Имея отдельный класс для скорости, нам не нужно помещать весь код, относящийся к скорости, в класс Ван, что позволяет повторно использовать класс скорости в нескольких приложениях.

В объектно-ориентированной функции пользователям не нужно беспокоиться о том, какой объект выполняет реальную работу. Для этого класс Van скрывает детали реализации от пользователей класса Van. Таким образом, в основном происходит следующее:пользователи просят класс Van выполнить определенное действие, а класс Van либо выполняет эту работу сам, либо просит другой класс выполнить это действие.

Типы наследования

Как показано ниже, существуют различные типы наследования.

Очень важно помнить, что Java не поддерживает множественное наследование. Это означает, что класс не может расширять более одного класса. Поэтому следующее является незаконным —

Пример

public class extends Animal, Mammal{} 

Однако класс может реализовывать один или несколько интерфейсов, что помогло Java избавиться от невозможности множественного наследования.


java

  1. Окончательное ключевое слово Java
  2. Оператор экземпляра Java
  3. Вложенный статический класс Java
  4. Анонимный класс Java
  5. Одноэлементный класс Java
  6. Java-отражение
  7. Класс Java ObjectOutputStream
  8. Дженерики Java
  9. Класс файла Java
  10. С# — Наследование