В чем разница между созданием объекта со ссылкой на суперкласс и созданием объекта со ссылкой на подкласс? - PullRequest
0 голосов
/ 02 августа 2020

Вот фрагмент моего кода:

class C implements Runnable{        
    public void run() {                                         
        for(int i=0;i<5;i++) {
            System.out.println("Thread2");
            try {
                Thread.sleep(1000);
            } catch (Exception e) {}
        }
    }
}

Затем в моем основном потоке я пишу:

C c = new C();

, что дает тот же результат, что и

Runnable c=new C();

Каковы преимущества использования любого из них? Есть ли общее правило, когда какую использовать?

1 Ответ

1 голос
/ 02 августа 2020

Для C c = new C() тип переменной имеет тип C, тогда как для Runnable c = new C() тип переменной Runnable. В первом случае в переменной могут храниться только экземпляры типа C. Во втором случае разрешены экземпляры класса, реализующего Runnable.

Runnable - это функциональный интерфейс, который используется для передачи частей исполняемого кода в качестве параметров методам. Обычно вы всегда будете использовать второй вариант для функциональных интерфейсов.

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