Pomimo tego, że pytanie to zostało zadane dawno temu, ale uważam, że wyczerpujący opis wyjaśniłby, dlaczego nie ma potrzeby używania publicznego streszczenia przed metodami i publicznego statycznego finału przed stałymi interfejsem.
Przede wszystkim interfejsy służą do określania wspólnych metod dla zbioru niepowiązanych klas, dla których każda klasa będzie miała unikalną implementację. Dlatego nie można określić modyfikatora dostępu jako prywatnego, ponieważ nie można uzyskać do niego dostępu przez inne klasy, które mają zostać zastąpione.
Po drugie, chociaż można inicjować obiekty typu interfejsu, ale interfejs jest realizowany przez klasy, które go implementują i nie są dziedziczone. Ponieważ interfejs może zostać zaimplementowany (zrealizowany) przez różne niepowiązane klasy, które nie znajdują się w tym samym pakiecie, chroniony modyfikator dostępu również nie jest prawidłowy. Tak więc dla modyfikatora dostępu pozostaje nam tylko wybór publiczny.
Po trzecie, interfejs nie ma żadnej implementacji danych, w tym zmiennych i metod instancji. Jeśli istnieje logiczny powód, aby wstawić zaimplementowane metody lub zmienne instancji do interfejsu, musi to być nadklasa w hierarchii dziedziczenia, a nie interfejs. Biorąc to pod uwagę, ponieważ żadna metoda nie może być zaimplementowana w interfejsie, dlatego wszystkie metody w interfejsie muszą być abstrakcyjne.
Po czwarte, interfejs może zawierać tylko stałą jako elementy danych, co oznacza, że muszą one być ostateczne, a stałe końcowe są oczywiście deklarowane jako statyczne, aby zachować tylko jedną ich instancję. Dlatego statyczny finał jest również koniecznością dla stałych interfejsu.
Podsumowując, chociaż użycie publicznego abstraktu przed metodami i publicznego statycznego finału przed stałymi interfejsem jest poprawne, ale ponieważ nie ma innych opcji, uważa się je za zbędne i nieużywane.