Я действительно изучаю темы. Но застрял с очень простой проблемой. Я знаю, что если я наследую интерфейс в своем классе, я должен дать определения всех методов (упомянутых в этом интерфейсе) в моем унаследованном классе, иначе он должен быть объявлен как абстрактный. Теперь я попытался очень простой код ...Почему абстрактное свойство теряется в подклассе интерфейса Runnable?
import java.util.*;
import java.lang.*;
import java.io.*;
abstract class Code implements Runnable
{
public static void main (String[] args) throws java.lang.Exception
{
}
}
не было никаких проблем при компиляции, а затем я удалил abstract
ключевое слово из кода класса и показывал мне ошибку компиляции, говоря класс код не является абстрактным. ..
Должна быть ошибка. Но потом я сделал то, что, проверяя некоторые варианты, расширил класс Thread также из класса и перекомпилировал код. И у меня нет ошибки компиляции! Хотя я не дал определения метода run()
, ни один из них не упоминал мой класс как абстрактный. там ...
class Code extends Thread implements Runnable
{
public static void main (String[] args) throws java.lang.Exception
{
}
}
означает, что этот класс потерял абстрактное свойство. Как это было возможно? Кто-нибудь объяснит, пожалуйста.