Skip to content

Instantly share code, notes, and snippets.

@ktutnik
Last active March 19, 2017 02:31
Show Gist options
  • Save ktutnik/c7f9ed2b9c7f58f22807ba4aab4fcea3 to your computer and use it in GitHub Desktop.
Save ktutnik/c7f9ed2b9c7f58f22807ba4aab4fcea3 to your computer and use it in GitHub Desktop.
default method
interface IManusia {
IPakaian Bawahan {get; set}
IBagianTubuh Kaki {get; set;}
IKemaluan Titit {get; set;}
}
interface ILakiLaki : IManusia{
default void Ngenceh(){
Bawahan.Find("Resleting").Buka()
Kaki.Ngangkang()
Titit.Curr()
}
}
interface IPerempuan : IManusia{
default void Ngenceh(){
Bawahan.Angkat()
Kaki.Jongkok()
Titit.Curr()
}
}
class Joni : ILakiLaki{
}
class GusLeo: ILakiLaki{
}
class Susi : IPerempuan{
}
//laki-laki yang seperti perempuan
class JoniSulistyawati : ILakiLaki, IPerempuan{
override default Ngenceh(){
ILakiLaki.base.Ngenceh()
}
}
//perempuan yang seperti laki-laki
class SantiSuwiryo : ILakiLaki, IPerempuan{
override default Ngenceh(){
IPerempuan.base.Ngenceh()
}
}
//keuntungannya Joni, dan GusLeo tidak perlu
//membuat implementasi sendiri-sendir
//kalo pake metode lama implementasi di interface harus sendiri sendiri
//atau bikin lagi satu baseclass
* EDIT
kalo pake metode lama, kayaknya bakal lebih sulit.
1. Supaya Joni, Leo tidak melakukan redundant di method Ngenceh maka bikin baseclass LakiLaki
2. Demikian halnya untuk Susi
3. untuk JoniSulistyawati dia harus di inherit dari baseclass LakiLaki, implement IPerempuan
4. Untuk SantiSuwiryo inherit baseclass Perempuan, implement ILakiLaki
hirarki kelasnya jadi lebih banyak kalo pake metode lama.
JoniSulistyawati dan SantiSuwiryo tidak bisa memilih dengan bebas, implementasi mehtod mana yang akan dia pilih, karena
implementasinya sudah ditentukan secara "baku", dia itu Laki-laki atau Perempuan.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment