> 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.

Kirim email ke