Мне нужна ясность по определенному условию c в методе по умолчанию в интерфейсе java - PullRequest
0 голосов
/ 11 июля 2020

У меня есть запрос. Предположим, у меня есть 2 интерфейса: f1 и f2, а интерфейс f2 расширяет интерфейс f1. оба интерфейса имеют метод m1 по умолчанию с некоторой реализацией. теперь у нас есть класс c1, который реализует интерфейс f2, и мы переопределяем метод m1 (). теперь я могу получить доступ к методу по умолчанию f2. f2.super.m1 (). как я могу получить доступ к методу по умолчанию интерфейса f1. Пожалуйста, поясните, возможно ли это или нет?

interface f1{
    public default void m1() {
        System.out.println("f1");
    };
}
interface f2 extends f1{
    public default void  m1(){
        System.out.println("f2");
    };
}
public class techgig implements f2 {
    public static void main(String[] args) {
        techgig a = new techgig();
    a.m1();
    }
    @Override
    public void m1() {
        // TODO Auto-generated method stub
        f2.super.m1();
    }
}

Будет напечатано f2, но я хочу напечатать f1

1 Ответ

0 голосов
/ 11 июля 2020

Вы можете увидеть следующее из java документов.

Расширение интерфейсов, содержащих методы по умолчанию:

Когда вы расширяете интерфейс, содержащий по умолчанию, вы можете сделать следующее:

  • Не говоря уже о методе по умолчанию, который позволяет вашему расширенному интерфейсу наследовать метод по умолчанию.
  • Повторно объявить метод по умолчанию, что делает его abstract.
  • Переопределите метод по умолчанию, который переопределяет его.

из документации, которую мы можем увидеть, когда мы расширяем интерфейс, который имеет метод по умолчанию. Если мы переопределим метод по умолчанию, он переопределит метод по умолчанию. В вашем случае интерфейс f1 метод по умолчанию переопределяется реализацией в интерфейсе f2.

Если вы хотите получить вывод метода по умолчанию в интерфейсе f1, не переопределяйте метод по умолчанию в интерфейсе f2.

Если вы измените свой интерфейс f2, как показано ниже, вы получите вывод «f1».

interface f2 extends f1 {
    
}

Ссылка: Методы по умолчанию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...