После первого использования класса, реализующего интерфейс на Java, и определения методов для этого интерфейса, вам все же необходимо определить методы для этого интерфейса во всех других классах, реализующих этот интерфейс или можете ли вы просто реализовать интерфейс и начать использовать методы интерфейса с объектом из этого класса, даже если методы для этого интерфейса явно не определены в этом классе?Объектно-ориентированные интерфейсы классов
ответ
Вам необходимо реализовать методы для каждого класса отдельно, но скажем, например, у вас есть интерфейс «MyInterface» с классом «MyFirstClass», реализующим его и его методы. Если класс «MySecondClass» реализует интерфейс, ему также потребуется реализовать методы. Но если «MySecondClass» расширяет «MyFirstClass», ему не нужно будет реализовывать методы интерфейса, потому что они уже реализованы в «MyFirstClass».
Не считая default methods,
Для каждого интерфейса не-абстрактный класс или один из его родительских классов орудий, либо, что класс или один из его предков классов должны определить все методы этого интерфейса.
Учитывая стандартные методы,
Для каждого интерфейса не-абстрактный класс или один из его родительских классов орудий, либо этот класс или один из его или один из его предков классов должны определить все методы этого интерфейса. Если этот не абстрактный класс или один из его или одного из его классов-предков не определяет метод, интерфейс должен определить метод с помощью функции метода по умолчанию.
Если класс не является подклассом класса, который уже реализовал интерфейс, вы снова определите все методы. Но если класс является подклассом класса, который уже реализовал интерфейс, не нужно снова определять методы, если вы не хотите переопределить поведение.
Так у вас есть
public class Interface {
public void someMethod();
}
и реализацию
public class InterfaceImpl implements Interface {
public void someMethod() {
System.out.println("Hello, world");
}
}
Вы можете создать подкласс InterfaceImpl
и использовать подкласс Наследование someMethod()
. Если InterfaceImpl
является абстрактным, то его подкласс должен быть конкретным.
Если у вас есть еще один класс, который не связан с InterfaceImpl
(например, не наследуется), то да, что другой класс должен реализовать someMethod()
для удовлетворения Interface
«s контракт.
Для примера у вас есть интерфейс
public Interface A
{
int add (int a , int b);
int subtract (int a , int b)
}
// Теперь у вас есть класс, который реализует интерфейс
public class AImpl implements A{
@override
public int add()
{
return a+b;
}
@override
public int subtract(){
//do something
}
}
Теперь вы хотите, чтобы написать класс C, который использует подобный метод в качестве интерфейса , вы можете либо реализовать этот интерфейс, либо записать реализацию для него в соответствии с вашими потребностями, либо расширить класс AImpl и использовать уже реализованный метод, если он вам подходит. Класс, который реализует интерфейс, должен всегда буквально реализовать все методы этого интерфейса.
- 1. классов машинописи и интерфейсы
- 2. диаграммы классов отношения Интерфейсы
- 3. классов Анонимных и интерфейсы
- 4. Интерфейсы против абстрактных классов
- 5. интерфейсы для шаблонных классов
- 6. Функциональные интерфейсы для ссылочных классов
- 7. Поиск классов, которые реализуют интерфейсы
- 8. API-интерфейсы классов классов с параметрами и типами возвращаемых данных
- 9. Интерфейсы или атрибуты для меток классов?
- 10. SOLID Принципы: интерфейсы против абстрактных классов
- 11. Dérivé интерфейсы для классов WCF прокси
- 12. Как использовать интерфейсы классов при использовании PHPSpec
- 13. Почему предпочтительнее использовать интерфейсы вместо абстрактных классов?
- 14. Родовые интерфейсы
- 15. Интерфейсы, наследование и Генетики в диаграмме классов UML
- 16. Программирование на интерфейсах: Вы пишете интерфейсы для всех классов домена?
- 17. Как использовать Java интерфейсы с несколькими исполнителями классов
- 18. marshaling java объекты, созданные экземплярами классов, реализующих интерфейсы с JAXB
- 19. Когда мне нужно использовать интерфейсы вместо абстрактных классов?
- 20. Почему в какой-либо абстракции используются интерфейсы вместо абстрактных классов?
- 21. Что означает эта статута: «Интерфейсы классов должны обеспечивать согласованную абстракцию»?
- 22. Почему для абстрактных классов требуется реализовать именованные интерфейсы?
- 23. Java 8 - интерфейсы с методами по умолчанию против абстрактных классов
- 24. Интерфейсы и абстрактные классы для классов моделей (MVVM)
- 25. Как заставить Entity Framework использовать интерфейсы для сгенерированных классов?
- 26. Зачем мне создавать интерфейсы для моих конкретных классов DataProvider?
- 27. Ищете библиотеку, которая генерирует интерфейсы из классов во время компиляции
- 28. Java: интерфейсы, содержащие внутренние перечисления; Расширение функциональности в реализации классов
- 29. О интерфейсы
- 30. Интерфейсы проектирования