> Lu juga keliru rif. Interface itu juga mewariskan. Tetapi bedanya > dengan class yang diwariskan bukanlah implementationnya tetapi > typenya. Ketika kita men-define konstanta di interface, maka class > yang mengimplementasikan interface tersebut sudah diwariskan konstanta > tersebut. Konstanta dan method yang tidak ada implementasi tersebut > disebut sebagai type. Makanya dengan menggunakan interface we call it > type inheritance while extending class we call it implementation > inheritance.
Walaupun di Java konstanta bisa ditaruh di interface, tapi ini bukan best practice. Malah bukan best practice yang lebih tepat bad practice hehehehe. Kenapa bad practice, karena menempatkan konstanta di interface berarti mengotori seluruh subclass yg implement interface tersebut. Lebih parahnya lagi bisa terjadi kalau 2 interface memiliki konstanta dengan datatype dan nama yang sama. Ini benar2 fatal akibatnya. Coba lihat contoh ini. public interface A{ final String hello = "thisIsA"; } public interface B{ final String hello = "thisIsB"; } public class Hello implements A,B{ public void hello(){ System.out.println(hello); } } // tebak apa yang terjadi ?? Moreover balik ke statement joshua, rasanya kita ga pernah denger istilah type inheritance, type inherited memang make sense. Tapi type inheritance rasanya belum pernah denger deh ?? Cek di google juga gw ga nemu istilah ini.