Ключевая разница - наследование и интерфейс в Java
Java - это язык программирования, разработанный Sun Microsystems. Java можно использовать для разработки различных приложений. Это мультипарадигмальный язык, который поддерживает объектно-ориентированное, структурированное и т. д. Основное преимущество Java заключается в том, что он поддерживает объектно-ориентированное программирование (ООП). Программист может создавать классы и объекты. В ООП есть четыре столпа. Это наследование, полиморфизм, абстракция и инкапсуляция. Наследование и интерфейсы связаны с ООП. Ключевое различие между наследованием и интерфейсом заключается в том, что наследование предназначено для получения новых классов из существующих классов, а интерфейс - для реализации абстрактных классов и множественного наследования.
Что такое наследование в Java?
Наследование может обеспечить повторное использование кода. Наследование помогает повторно использовать атрибуты и методы существующего класса. Механизм получения нового класса из старого называется наследованием. Старый класс известен как родительский класс или суперкласс. Производный класс называется дочерним классом или подклассом.
Синтаксис наследования Java выглядит следующим образом.
class subclass_name extends superclass_name {
объявление переменной;
объявление метода;
}
Концепцию наследования можно пояснить на следующем примере. Предположим, что существует класс с именем A следующим образом.
публичный класс A{
public void sum(){
System.out.println("Сумма");
}
}
Если мы хотим добавить новый метод без изменения существующего класса, мы можем сделать это следующим образом.
публичный класс B{
public void sub(){
System.out.println(“Sub”);
}
}
Программист может использовать наследование для использования sum() класса A.
общедоступный класс B расширяет класс A{
public void sub(){
System.out.println(“Sub”);
}
}
В основной функции можно создать объект B и вызвать функцию sub(), принадлежащую классу B, и функцию sum(), принадлежащую классу A, используя наследование.
public static void main(String args){
B obj=new B();
obj.sub();
obj.sum();
}
Существуют разные типы наследования. Это одиночное наследование, множественное наследование, многоуровневое наследование и иерархическое наследование. При одиночном наследовании существует один базовый класс и один производный класс. В многоуровневом наследовании есть три класса, а именно: базовый класс, промежуточный класс и производный класс. Промежуточный класс наследуется от базового класса, а производный класс наследуется от промежуточного класса. При иерархическом наследовании имеется один базовый класс и множество производных классов. Существует особый тип, известный как гибридное наследование. Это комбинация двух или более типов наследования.
Рисунок 01: Наследование
В множественном наследовании есть много базовых классов и один производный класс. Предположим, что классы A и B являются базовыми классами. Класс C является производным классом. Если оба класса A и B имеют один и тот же метод, и программист вызывает этот метод из производного класса, это вызовет проблему неоднозначности. Наследование двух классов может вызвать ошибку времени компиляции. Поэтому множественное наследование в Java не поддерживается. Для решения этой проблемы можно использовать интерфейс.
Что такое интерфейс в Java?
Абстракция - это процесс сокрытия деталей реализации и отображения пользователю только функциональных возможностей. Абстракция может быть достигнута с помощью абстрактных классов или интерфейсов. Абстрактный метод - это метод без реализации. Класс с хотя бы одним абстрактным методом является абстрактным классом. Пример абстрактного класса выглядит следующим образом.
абстрактный класс A{
abstract void sum();
}
Предположим, что есть два абстрактных класса A и B. Для реализации абстрактных методов A и B создается новый класс C. Тогда класс C должен расширять как A, так и B. Но множественное наследование в Java не поддерживается. Следовательно, следует использовать интерфейсы. Интерфейсы можно использовать для объявления методов, но нельзя определять методы. Невозможно создать объект с помощью интерфейсов. Класс C должен реализовать все методы интерфейса A и B.
интерфейс A{
пустая сумма();
}
интерфейс B{
void sub();
}
класс C реализует A, B{
public void sum(){
System.out.println(“Суммирование”);
}
public void sub(){
System.out.println(“Вычитание”);
}
}
Теперь в основной программе можно создать объект C и вызвать оба метода.
public static void main (String args) {
C obj=new C();
obj.sum();
obj.sub();
}
Итак, интерфейсы можно использовать для реализации множественного наследования.
Другое использование интерфейсов заключается в том, что они обеспечивают безопасность. См. приведенный ниже код.
интерфейс A {
пустая сумма ();
}
класс B реализует A {
public void sum () {
System.out.println(“Суммирование”);
}
public void умножить () {
System.out.println(“Умножение”);
}
}
При создании объекта B можно вызвать оба метода sum() иmultiple(). Если программист хочет ограничить использование функции умножения(), это возможно следующим образом.
public static void main(String args){
A obj=new B();
obj.sum();
}
A obj=new B(); создаст объект. Это тип A, и память выделена как B. Можно вызвать функцию sum(), но нельзя выполнить функциюmulti(). Это ограничение делается с помощью интерфейсов.
Каковы сходства между наследованием и интерфейсом в Java?
- Обе концепции связаны с объектно-ориентированным программированием
- Оба представляют отношения IS-A.
В чем разница между наследованием и интерфейсом в Java?
Наследование и интерфейс в Java |
|
Наследование - это концепция ООП для создания новых классов из существующих классов. | Интерфейс - это механизм в ООП для реализации абстракции и множественного наследования. |
Использование | |
Наследование обеспечивает повторное использование кода. | Интерфейсы обеспечивают абстракцию и множественное наследование. |
Резюме – Наследование и интерфейс в Java
Java - мультипарадигмальный язык программирования, поддерживающий объектно-ориентированное программирование. Наследование и интерфейсы связаны с объектно-ориентированным программированием. Разница между наследованием и интерфейсом заключается в том, что наследование - это создание новых классов из существующих классов, а интерфейсы - это реализация абстрактных классов и множественного наследования.
Загрузить PDF-версию книги «Наследование и интерфейс в Java»
Вы можете загрузить PDF-версию этой статьи и использовать ее в автономном режиме в соответствии с примечанием к цитированию. Пожалуйста, загрузите PDF-версию здесь. Разница между наследованием и интерфейсом в Java