"Halo, Amigo! Dina iki sampeyan bakal nggawe sawetara panemuan. Topik kanggo dina iki-drum roll, please-yaiku antarmuka. "

"Ya, dina sing apik banget aku mulih kanggo adus."

" Antarmuka minangka anak saka Abstraksi lan Polimorfisme. Antarmuka banget kaya kelas abstrak ing ngendi kabeh metode abstrak. Diumumake kanthi cara sing padha karo kelas, nanging nganggo tembung kunci. interfaceKene sawetara conto:"

Kode Katrangan lan kasunyatan
interface Drawable
{
void draw();
}
interface HasValue
{
int getValue();
}
1) Tinimbang tembung class, kita nulis interface.

2) Isine mung cara abstrak (ora perlu ditambahi tembung abstrak).

3) Nyatane, kabeh cara ing antarmuka umum.

interface Element extends Drawable, HasValue
{
int getX();
int getY();
}
Antarmuka mung bisa warisan antarmuka liyane.

Sampeyan bisa duwe akeh antarmuka wong tuwa.

class abstract ChessItem implements Drawable, HasValue
{
private int x, y, value;

public int getValue()
{
return value;
}

public int getX()
{
return x;
}

public int getY()
{
return y;
}

}
Kelas bisa diwenehi sawetara antarmuka (lan mung siji kelas). Kanggo nuduhake warisan iki, kita nggunakake tembung kunci  implements.

Kelas kasebut ChessItem diumumake abstrak: dileksanakake kabeh cara sing diwarisake kajaba tarik.

Ing tembung liyane, ChessItem ngandhut siji cara abstrak  draw():.

"Menarik. Nanging kenapa kita butuh antarmuka? Nalika digunakake?"

"Antarmuka duwe rong kaluwihan sing kuwat tinimbang kelas:"

1) Pemisahan "definisi metode" saka implementasine metode.

Aku sadurunge ngandhani yen sampeyan pengin ngidini kelas liyane nelpon metode kelas sampeyan, sampeyan kudu menehi tandha minangkapublic . Yen sampeyan pengin cara tartamtu diarani mung saka kelas sampeyan dhewe, mula kudu ditandhani private. Ing tembung liyane, kita mbagi cara kelas dadi rong kategori: «kanggo kabeh wong» lan «mung kanggo aku».

Kita bisa nggunakake antarmuka kanggo ngiyataken pamisahan iki malah luwih. Kita bakal nggawe "kelas kanggo kabeh wong" khusus sing bakal oleh warisan "kelas mung-kanggo-kula". Sing bakal katon kaya iki:

sadurunge
class Student
{
 private String name;

 public Student(String name)
 {
  this.name = name;
 }

 public String getName()
 {
  return this.name;
 }

 private void setName(String name)
 {
  this.name = name;
 }
Sawise
interface Student
{
 public String getName();
}

class StudentImpl implements Student
{
 private String name;
 public StudentImpl(String name)
 {
  this.name = name;
 }
 public String getName()
 {
  return this.name;
 }
 private void setName(String name)
 {
  this.name = name;
 }
}
sadurunge
public static void main(String[] args)
{
 Student student =
               new Student("Alibaba");
 System.out.println(student.getName());
}
Sawise
public static void main(String[] args)
{
 Student student =
               new StudentImpl("Ali");
 System.out.println(student.getName());
}

Kita pamisah kelas kita dadi rong bagéyan: antarmuka lan kelas sing ngleksanakake antarmuka.

"Dadi apa kauntungane?"

"Antarmuka sing padha bisa dileksanakake dening (marisi) kelas sing beda-beda. Lan saben kelas bisa duwe prilaku dhewe. Kaya ArrayList lan LinkedList minangka rong implementasi antarmuka List sing beda. "

Mangkono, kita ndhelikake ora mung macem-macem implementasine, nanging uga kelas sing ngemot implementasine (kita mung bisa nggunakake antarmuka ing endi wae ing kode). Iki ngidini kita ngganti sawetara obyek kanthi fleksibel karo obyek liyane nalika program kasebut mlaku, ngganti prilaku obyek tanpa ngerti kelas apa wae sing nggunakake.

Ing kombinasi karo polimorfisme, iki minangka teknik sing kuat banget. Saiki, ora jelas kenapa kita kudu nindakake iki. Pisanan sampeyan kudu nemoni program sing kalebu puluhan utawa atusan kelas kanggo ngerteni kepiye antarmuka bisa nyederhanakake urip sampeyan.

2) Multiple warisan.

Ing Jawa, saben kelas mung bisa nduweni siji kelas induk. Ing basa pamrograman liyane, kelas asring duwe sawetara kelas induk. Iki trep banget, nanging uga nggawe akeh masalah.

Jawa nawakake kompromi:   sampeyan ora bisa oleh warisan sawetara kelas, nanging sampeyan bisa ngleksanakake sawetara antarmuka. Antarmuka bisa duwe sawetara antarmuka induk.  A kelas bisa ngleksanakake sawetara antarmuka lan oleh warisan mung siji kelas induk.