Bu sorunun uzun zaman önce sorulmuş olmasına rağmen, kapsamlı bir açıklamanın neden bir arabirimin sabitlerinden önce yöntemler ve genel statik final kullanımına neden gerek olmadığını açıklığa kavuştuğunu hissediyorum.
Her şeyden önce, arabirimler, her sınıfın benzersiz bir uygulamaya sahip olacağı ilişkisiz sınıflar kümesi için ortak yöntemler belirtmek için kullanılır. Bu nedenle, geçersiz kılınacak diğer sınıflar tarafından erişilemediğinden erişim değiştiriciyi özel olarak belirtmek mümkün değildir.
İkincisi, bir arabirim türündeki nesneleri başlatabilse de, onu uygulayan ve miras alınmayan sınıflar tarafından bir arabirim gerçekleştirilir. Ve bir arabirim aynı pakette olmayan farklı ilişkisiz sınıflar tarafından uygulanabileceğinden (gerçekleştirildiğinden), korumalı erişim değiştirici de geçerli değildir. Bu yüzden erişim değiştirici için sadece herkese açık seçim kalıyoruz.
Üçüncüsü, bir arabirimin örnek değişkenleri ve yöntemleri de dahil olmak üzere herhangi bir veri uygulaması yoktur. Arabirimde uygulanan yöntemleri veya örnek değişkenleri eklemek için mantıklı bir neden varsa, bir arabirim değil miras hiyerarşisinde bir üst sınıf olmalıdır. Bu gerçeği göz önünde bulundurarak, bir arayüzde hiçbir yöntem uygulanamayacağı için, arayüzdeki tüm yöntemler soyut olmalıdır.
Dördüncüsü, Interface sadece veri üyeleri olarak sabit içerebilir, bu da nihai olmaları gerektiği anlamına gelir ve elbette nihai sabitler yalnızca bir örneğini tutmak için statik olarak bildirilir. Bu nedenle, arabirim sabitleri için statik final de bir zorunluluktur.
Sonuç olarak, bir arabirimin sabitleri önce genel özeti ve genel statik finali kullanmasına rağmen, başka bir seçenek olmadığından gereksiz olarak kabul edilir ve kullanılmaz.