Terlepas dari kenyataan bahwa pertanyaan ini telah lama ditanyakan tetapi saya merasa deskripsi yang komprehensif akan menjelaskan mengapa tidak perlu menggunakan abstrak publik sebelum metode dan final statis publik sebelum konstanta antarmuka.
Pertama-tama Antarmuka digunakan untuk menentukan metode umum untuk satu set kelas yang tidak terkait yang setiap kelas akan memiliki implementasi yang unik. Oleh karena itu tidak mungkin untuk menentukan pengubah akses sebagai pribadi karena tidak dapat diakses oleh kelas lain untuk diganti.
Kedua, Meskipun seseorang dapat memulai objek dari jenis antarmuka tetapi antarmuka diwujudkan oleh kelas yang mengimplementasikannya dan tidak diwariskan. Dan karena sebuah antarmuka dapat diimplementasikan (direalisasikan) oleh kelas-kelas berbeda yang tidak terkait yang tidak ada dalam paket yang sama maka pengubah akses yang dilindungi juga tidak valid. Jadi untuk pengubah akses kita hanya dibiarkan dengan pilihan publik.
Ketiga, sebuah antarmuka tidak memiliki implementasi data termasuk variabel instan dan metode. Jika ada alasan logis untuk memasukkan metode yang diimplementasikan atau variabel instan dalam suatu antarmuka maka harus berupa superclass dalam hierarki warisan dan bukan antarmuka. Mempertimbangkan fakta ini, karena tidak ada metode yang dapat diimplementasikan dalam sebuah antarmuka maka semua metode dalam antarmuka harus abstrak.
Keempat, Antarmuka hanya dapat menyertakan konstanta sebagai anggota datanya yang berarti mereka harus final dan tentu saja konstanta akhir dinyatakan statis untuk menjaga hanya satu instance dari mereka. Oleh karena itu final statis juga merupakan keharusan untuk konstanta antarmuka.
Jadi kesimpulannya meskipun menggunakan abstrak publik sebelum metode dan public static final sebelum konstanta dari sebuah antarmuka adalah valid tetapi karena tidak ada pilihan lain itu dianggap berlebihan dan tidak digunakan.