Нужна помощь в понимании концепции run () при использовании интерфейса в Java - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь изучить концепцию интерфейса в Java. У меня есть два файла .java:

// I.java
public interface I {
    public abstract void run(double avg);
}

// S.java
public class S 
{
    public void func1(I ii, double av) 
    {
        System.out.println("Initial Average : " + av);
    }

    public void start() 
    { 
        double avg = 90;         // need to pass this avg to run()
    }

    public static void main(String[] args) 
    {
        S obj = new S(); 
        obj.func1(new I() {            // Please help in understanding this line also
            public void run(double avgg) {
                System.out.println("Final Average : " + avgg);
            }
        }, 76.8);
        obj.start();
    }
}

Вывод вышеуказанного кода: начальное среднее: 76,8

И требуемый вывод такой:

начальное среднее: 76,8

Конечное среднее: 90

Сейчас я пытаюсь понять концепцию run () в интерфейсе, но не могу ее понять. Я хочу понять код main (), чтобы я мог изменить его, чтобы получить требуемый вывод. Значит, как мы можем вызвать run () функции main () из start () и передать значение avg = 90 для получения требуемого вывода.

Примечание. Это проблема присваивания. Но я стараюсь изо всех сил понять концепцию run () в интерфейсе (который используется здесь). Также я хочу понять полный код функции main ().

1 Ответ

2 голосов
/ 05 ноября 2019

Я не понимаю, какую цель это решает, но вы можете сделать что-то вроде этого. (Я ответил после прочтения второго комментария. Первый комментарий действительно отвечает на первоначальный запрос.)

interface I {
    public abstract void run(double avg);
}

// S.java
public class S {

    I ii;

    public void func1(I ii, double av) {
        System.out.println("Initial Average : " + av);
        this.ii = ii;
    }

    public void start() {
        double avg = 90; // need to pass this avg to run()
        ii.run(avg);
    }

    public static void main(String[] args) {
        S obj = new S();
        obj.func1(new I() { // Please help in understanding this line also
            public void run(double avgg) {
                System.out.println("Final Average : " + avgg);
            }
        }, 76.8);
        obj.start();        
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...