Niedawno przechodzę przez plik src.zip JDK 1.8 i dowiedziałem coś dość dziwnego.

public interface Closeable extends AutoCloseable 

A ponieważ autoklosialny jest również interfejsem , jak jest jak wszystko w Javie dozwolone do Extion to?

Kiedy próbowałem go z dowolnymi innymi interfejsami, stale otrzymuję komunikat o błędzie:

Runnable typu nie może być SuperClass of ; Superclass musi być klasą.

Więc dlaczego ta rozbieżność? czy coś mi brakuje? Jeśli tak, proszę mi wyjaśnić.

0
404 Brain Not Found 4 czerwiec 2018, 12:43

3 odpowiedzi

Najlepsza odpowiedź

Jeśli tylko myślisz o tym pod względem języka naturalnego, interfejsy mogą rozszerzyć inne interfejsy, ponieważ są one rozszerzanie wymogi, które dają klasie wykonawczej. Są bardziej konkretne umowy .

Jeśli interfejs miał użyć słowa kluczowego implements, aby wyrazić ten pomysł, to byłoby mylące. "Implementuje" oznacza "dostarczenie wdrażania" i to nie dzieje się tutaj.

W związku z tym:

  1. Interfejsy mogą rozszerzyć interfejsy
  2. Zajęcia mogą rozszerzyć klasy
  3. Klasy mogą wdrożyć interfejsy
4
Michael 4 czerwiec 2018, 09:48

interfejsy extends interfejsy. nie implements.

Podczas dziedziczenia używasz słowa kluczowego extends, zarówno gdy klasa dziedziczy z klasy lub interfejsu dziedziczy z innego interfejsu.

2
Roshana Pitigala 4 czerwiec 2018, 09:50

Jeśli chodzi o interfejsy, słowo kluczowe extends można zobaczyć jako implements dla klas.

Spowoduje to dodanie możliwości super interfejsu do przedłużacza

0
DamCx 4 czerwiec 2018, 09:44