Наследование Java — это свойство концепции объектно-ориентированного программирования , с помощью которого мы можем получить доступ к некоторым методам класса в другом классе. Класс, методы которого наследуются, известен как Родительский класс/Базовый класс/Суперкласс , а класс, производный от родительского класса, известен как Дочерний класс/Подкласс . .
- Пример наследования Java
- Синтаксис
- Некоторые важные моменты наследования:
- Зачем использовать наследование в Java
- Типы наследования в Java
- Одиночное или простое наследование
- Многоуровневое наследование
- Множественное наследование
- Почему множественное наследование не поддерживается в java
- Иерархическое наследование
- Гибридное наследование
Пример наследования Java
Концепция наследования в Java заключается в том, что вы можете создавать новые классы, основанные на существующих классы. Когда вы наследуете методы и свойства от существующего класса, вы можете повторно использовать методы и поля родительского класса. Кроме того, вы также можете добавлять новые методы и поля в свой текущий класс.
Синтаксис
class base_class_name расширяет super_class_name {//код здесь, как методы и поля}
Некоторые важные моменты наследования:
- Любая подпрограмма может наследовать все члены (все поля, функции-члены и вложенные классы) от его суперкласс.
- Конструкторы не считаются функциями-членами; вот почему подкласс не может наследовать его, но мы можем вызвать конструктор суперкласса.
- Подкласс наследует один суперкласс по одному, но у класса может быть несколько подклассов.
Зачем использовать наследование в Java
Java — это объектно-ориентированный язык программирования. Наследование — одна из самых популярных концепций объектно-ориентированного программирования.
Мы используем наследование в Java по следующим причинам:
- Инкапсуляция : если у нас есть общие атрибуты, мы инкапсулируем их в родительский класс и присвоить определенные атрибуты дочерним классам.
- Полиморфизм : мы также можем использовать полиморфизм с наследованием в Java. Таким образом, в зависимости от типа дочернего класса один и тот же класс ведет себя по-разному. Полиморфизм времени выполнения не может быть достигнут без использования наследования.
- Повторное использование кода: Используя наследование, мы можем создать повторно используемый код.
- Эффективность : при написании кода эффективно использовать наследование. Это может увеличить скорость проекта.
- Мы можем моделировать наследование классов объектами реального времени, что делает ООП более реалистичными.
- Наследование предоставляет данные прячется. Базовый класс может скрыть некоторые данные из производного класса, сделав его закрытым.
Типы наследования в Java
Существует пять типов наследования.
- Одиночное или простое наследование
- Множественное наследование (через интерфейс)
- Многоуровневое наследование
- Иерархическое наследование
- Гибридное наследование (через интерфейс)
Теперь мы собираемся обсудить эти четыре различных типа наследования, один за другим, поскольку Java не поддерживает множественное наследование. Мы обсудим это позже в этой теме.
Одиночное или простое наследование
В этом наследовании подкласс является производным от своего суперкласса. Как правило, при одиночном наследовании существует только один суперкласс и один подкласс. Это также известно как одноуровневое наследование.
На приведенной выше диаграмме класс A расширяется классом B. Здесь класс A является родительским/суперклассом класса B, который является дочерним/подклассом.
Давайте разберемся с простым наследованием на примере.
//Simple.javaclass Person {int age, id; String name; void naming (String name) {System.out.println ("Name:" + name);}} class Student расширяет Person {void ageN (int age) {System .out.println ("Возраст учащегося:" + возраст);}} class Simple {public stati c void main (String [] er) {Student s = new Student (); s.naming ("Robert"); s.ageN (14);}}
См. вывод ниже.
Многоуровневое наследование
Когда подкласс является производным от производного класса, этот тип наследования называется многоуровневым наследованием. В многоуровневом наследовании производный класс будет наследовать родительский класс , а также, как и производный класс , действовать как родительский класс в другой класс.
Как указано выше диаграмма Класс A расширяется классом B, а класс B расширяется классом C.
Теперь мы обсудим это с помощью примера.
//Многоуровневый. java//создание classclass Student {void printIden () {System.out.print ("Student's");}}//расширение Student classclass BTech extends Student {void Degree () {System.out.println ("Degree is Bachelor of Technology ");}}//расширение класса BTech. класс CSE расширяет BTech {void Stream () {System.out.println (" Stream is Computer Sciencec and Engineering ");}}//расширение класса CSE. класс CyberSecurity расширяет CSE {void Domain () {System.out.println ("Домен - это кибербезопасность");}}//класс класса драйвера Multilevel {public static void main (String [] er) {BTech bt = new BTech (); bt. printIden (); bt.Degree (); CSE cse = new CSE (); cse.printIden (); cse.Stream (); CyberSecurity cs = new CyberSecurity (); cs.printIden (); cs.Domain (); }}
См. вывод ниже.
В этом примере мы видели, что класс Student наследуется классом BTech, далее класс BTech расширяется классом CSE, а класс CyberSecurity наследует класс CSE.
Множественное наследование
Когда один класс наследует более одного класса, это называется множественным наследованием.. Но, как мы упоминали ранее, java не поддерживает множественное наследование из-за неоднозначности.
Предположим, класс C наследует класс A и класс B. Если в обоих этих классах есть один и тот же метод, он будет создавать неоднозначность всякий раз, когда мы вызываем стандартный метод с использованием объекта дочернего класса. Тем не менее, мы пытаемся создать такие ситуации, тогда он покажет нам ошибку времени компиляции, а не ошибку времени выполнения (потому что ошибка времени компиляции лучше, чем ошибка времени выполнения).
На диаграмме выше классы A и B расширяются на Класс C.
Мы можем добиться множественного наследования в Java через интерфейсы.
См. Программу ниже.
//Множественное. java//объявление интерфейса Petinterface Pet {public void Show ();}//объявление интерфейса Animalinterface Animal {public void Type ();}//Множественное наследование с использованием класса интерфейса Dog реализует Pet, Animal {//методы удаления ярлыков public void Show ( ) {System.out.println ("It is a Pet");}//объявление методов public void Type () {System.out.println ("It is an Animal");}}//класс класса драйвера Multiple { public static void main (String [] er) {Dog d = new Dog (); d.Show (); d.Type ();}}
Результат ниже.
Почему множественное наследование не поддерживается в java
Рассмотрим сценарий, в котором A, B и C — три класса. Класс C наследует классы A и B. Если классы A и B имеют один и тот же метод и вы вызываете его из объекта дочернего класса, они создадут неоднозначность для вызова метода класса A или B.
Поскольку ошибки времени компиляции лучше ошибок времени выполнения, Java отображает ошибку времени компиляции, если вы наследуете два класса. Таким образом, независимо от того, используете ли вы тот же метод или другой, возникнет ошибка времени компиляции.
Иерархическое наследование
В этом Наследование, один класс расширяется множеством других подклассов. В Иерархическом наследовании один родительский класс будет унаследован любыми подклассами.
На приведенной выше диаграмме класс B, класс C и класс D наследуют суперкласс A. См. следующий код.
//Hierarchical.java//создание класса class Person {int id; //создание общего метода void printId (int id) {System.out.println ("ID:" + id);}}//расширение класса personclass Student extends Person {void identif () {System.out.print (" Student's ");}}//расширение класса person classclass Teacher extends Person {void identify () {System.out.print (" Teacher's ");}}//расширение класса person class Clark extends Person {void identify () {System. out.print ("Clark's");}}//класс драйвера class Hierarchical {public static void main (String [] er) {Student s = new Student (); s.iden (); s.printId (11701200); Кларк c = новый Кларк (); c.iden (); c.printId (1203); Учитель t = новый Учитель (); t.iden (); t. printId (11020);}}
См. результат.
В этом примере выше у нас есть имя класса Person, у которого есть стандартный метод printId (), который используется классами Student, Teacher и Clark.
Гибридное наследование
Если существует класс A и он расширяется классом B и классом C. Кроме того, если класс D наследует и класс B, и класс C, тогда этот тип наследования известен как гибридное наследование. Это также вызовет ошибку, поскольку класс D наследует несколько классов, то есть класс B и класс C.
Гибридное наследование — это комбинация как одиночного, так и множественного наследования. Опять же, гибридное наследование также не поддерживается напрямую в Java, только через интерфейс, который мы можем достичь.
Наконец, пример наследования Java | На этом статья о наследовании в Java окончена.