Як це працює без помилок, якщо ми використовуємо обидва розширення Thread реалізує Runnable разом?
public class MyThread extends Thread implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
}
}
Редагувати: Нитка вже реалізує Runnable, тому її значення менше використовувати обидва.
Якщо я оголошу такий клас
MyThread extends implements Runnable, Runnable{
...
}
Його "Дублікат інтерфейсу, який можна виконати для типу MyThread", тому ми не можемо компілювати.
Тоді чому ми не отримали помилки з цього приводу
public class MyThread extends Thread implements Runnable{ .. }
Відповіді:
1 для відповіді № 1Це не виграло, але, але Thread
вже реалізує Runnable
, тож це повторюється.
0 для відповіді № 2
Так, ми можемо це зробити, як зазначено вище. На цьому обмеження немає.
Але чесно кажучи, я не можу придумати логічногосценарій для цього. Оскільки інтерфейс передбачає поведінку, і якщо суперклас реалізує публічну поведінку (оскільки всі методи інтерфейсу є загальнодоступними) інтерфейсу, дитина успадкує реалізовану поведінку від суперкласу.