#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