как мы можем вызвать метод отображения в интерфейсе из основного метода

#java #interface

Вопрос:

Ниже приведена программа, которую я опробовал,

 public interface MyInterface{  
    public default void display() {
        System.out.println("display method of MyInterface");
    }
}

public class InterfaceExample implements MyInterface{
    public void display() {
         System.out.println("display method of class");
    }

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

я хочу вызвать display() метод в интерфейсе из main метода

Комментарии:

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

Ответ №1:

Внутри public interface InterfaceExample {} вы можете это сделать. Вне этого это невозможно.

В классе вы можете сделать: MyInterface.super.display(); .

Вы можете создать вспомогательный метод, если вам это необходимо:

 public class InterfaceExample implements MyInterface{
    public void display() {
        System.out.println("display method of class");
    }

    public void originalDisplay() {
        MyInterface.super.display();
    }

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

Но что, если вы не «контролируете» InterfaceExample.java исходный файл и не можете добавить этот метод?

Тогда в языке java нет ничего, что позволяло бы вам.

Ответ №2:

Вы можете сделать это тремя способами, сначала давайте посмотрим интерфейс.

 public interface MyInterface{
    public default void display() {
        System.out.println("display method of MyInterface");
    }
}
 

и первый способ-это,

 public class Main {
    public static void main(String args[]){
        MyInterface myInterface = new MyInterface() {
            @Override
            public void display() {
                System.out.println("display method in main");
            }
        };
        myInterface.display();
    }
} 
 

Это создаст интерфейс object из main метода, и, инициируя создание объекта, мы также определяем метод интерфейса.
результатом будет display method in main

и второй способ-это,

 public class Main implements  MyInterface{
    public static void main(String args[]){
        Main main = new Main();
        main.display();
    }
} 
 

и здесь мы вызываем метод интерфейса по умолчанию, создавая Main объект класса и вызывая display() метод.
результатом будет display method of MyInterface

Третий способ-это,

 public class Main implements  MyInterface{

    @Override
    public void display(){

        System.out.println("display method in main");
    }

    public static void main(String args[]){
        Main main = new Main();
        main.display();
    }
}
 

Здесь мы переопределяем метод интерфейса, а затем создаем объект Main и запускаем display() метод.
результатом будет, display method in main