11 Hukum Inheritance Pada Java Serta Contohnya
Hallo gan, sehabis anda sebelumnya mengetahui apa itu inheritance juga konsep-konsep dasarnya yang perlu diketahui, maka kali ini akan dibahas mengenai 12 hukum inheritance pada Java beserta dengan contoh-contohnya sehingga anda akan gampang mengaplikasikannya pada dan memahaminya dikala melaksanakan coding Java.
Contoh:
Secara implisit:
Bila sebuah constructor secara eksplisit tidak memanggil constructor dari superclass, maka compiler secara otomatis akan memanggil constructor tanpa argumen secara implisit.
Contoh:
Tapi jikalau superclass mempunyai constructor dengan argumen tertentu dan subclass tidak memanggil constructor tersebut secara ekplisit maka compile error akan terjadi.
Contoh:
Contoh arahan berikut ini akan menjadikan compile error:
Pada inheritance, member dengan acces modifier private tidak sanggup diwariskan. Sedangkan member default sanggup diwariskan asalkan berada dalam package yang sama, jadi di luar itu tidak sanggup diwariskan. Untuk member protected hanya sanggup diakses oleh subclass melalui inheritance baik itu pada package yang sama ataupun berbeda. Terakhir ialah member public yang sanggup diwariskan di mana saja.
Untuk mengakses member dari superclass maka keyword super sanggup digunakan.
Contoh:
Bisa dilihat baik itu superclass ataupun subclass mempunyai method yang sama yaitu bergerak(), ini ialah overriding. Kaprikornus class Mobil sanggup memanggil method bergerak milik class Kendaraan dengan keyword super().
Perhatikan teladan berikut ini:
Aturannya ialah rujukan objek superclass yang berada disebelah kiri sanggup menjadi rujukan untuk sub type yang berada disebelah kanan.
Selanjutnya, bila dilanjutkan dengan pemanggilan method:
Ketika objek memanggil method milik superclass maka hal ini sanggup dilakukan, ibarat pada kendaraan.bergerak(). Namun, dikala subclass mempunyai method baru, maka method tersebut tidak sanggup dipanggil melalui rujukan dari superclass, ibarat kendaraan.injakGas().
Dalam Java, multi inheritance pada interface diizinkan untuk dilakukan. Interfaces itu sendiri merupakan 100% class abstract.
Contoh:
Hal di atas sanggup dilakukan alasannya ialah interfaces tidak mempunyai method yang konkrit sehingga tidak menjadikan kerancuan.
Java tidak membolehkan suatu class inherit pada dua class atau lebih secara langsung. Ini dikarenakan jikalau dilakukan akan menjadikan keraguan. Dan jikalau dilakukan akan menjadikan problem yang dikenal dengan Deadly Diamond of Death.
Contoh:
Contoh:
Contoh:
Pada teladan di atas class KendaraanRodaDua ialah class abstract. Kaprikornus class ini sanggup mengimplementasikan 2 method dari interface dapatDigerakkan, yaitu method startMesin() dan stopMesin(). Oleh alasannya ialah itu, 2 method lainnya yaitu berhenti() dan bergerak() dari interface itu harus di implementasikan pada class konkrit yaitu class Motor.
Tapi, dikala class abstract tidak mengimeplementasikan sama sekali method dari interface maka class konkrit yang pertama kali inherit dari class abstract tersebut harus mengimplementasikan semua method dari interface tersebut.
Sebagai embel-embel yang juga penting diketahui, dikala suatu class konkrit (non-abstract) mengimplementasikan interface maka class tersebut wajib mengimplentasikan seluruh method-method dari interface tersebut. Arti mengimplemntasikan ialah menawarkan method dari interface itu body alasannya ialah semua method-method yang terdapat pada interface ialah method abstract yang tidak mempunyai body method.
Demikianlah klarifikasi mengeni aturan-aturan pada inheritance beserta dengan contohnya. Semoga sanggup membantu anda yang sedang memahami topik yang serupa dikala mencar ilmu Java.
Aturan dan Contoh Inheritance Java
Berikut ini ialah hukum dan teladan pada inheritance yang perlu anda ketahui.1. Semua class inherit dari class objek secara pribadi ataupun tidak langsung
Setiap class yang dibentuk pada Java inherit dari class Objek. Meskipun tidak dinyatakan secara eksplisit.Contoh:
public class Mobil { }
Secara implisit:
public class Mobil extends Object { }
2. Dalam inheritance, suatu contructor tidak sanggup diwariskan
Constructor dari superclass tidak sanggup diwariskan kepada subclass, namun sanggup dipanggil dengan menggunakan keyword super().Bila sebuah constructor secara eksplisit tidak memanggil constructor dari superclass, maka compiler secara otomatis akan memanggil constructor tanpa argumen secara implisit.
Contoh:
public class Kendaraan { //Ini constructor tanpa argument public Kendaraan(){ System.out.println("Ini kendaraan"); } }
public class Mobil extends Kendaraan { public Mobil(){ super();//Sebenarnya super() ini tidak harus ditulis, alasannya ialah dipanggil secara implisit oleh compiler } }
Tapi jikalau superclass mempunyai constructor dengan argumen tertentu dan subclass tidak memanggil constructor tersebut secara ekplisit maka compile error akan terjadi.
Contoh:
public class Kendaraan { protected String nama; public Kendaraan(String nama){ this.nama = nama; } }
public class Mobil extends Kendaraan { String brand; public Mobil(String brand){ super(brand); this.brand = brand; } }
Contoh arahan berikut ini akan menjadikan compile error:
public class Mobil extends Kendaraan { String brand; public Mobil(String brand){ this.brand = brand; } }
3. Acces modifier pada inheritance
Pada inheritance, member dengan acces modifier private tidak sanggup diwariskan. Sedangkan member default sanggup diwariskan asalkan berada dalam package yang sama, jadi di luar itu tidak sanggup diwariskan. Untuk member protected hanya sanggup diakses oleh subclass melalui inheritance baik itu pada package yang sama ataupun berbeda. Terakhir ialah member public yang sanggup diwariskan di mana saja.
4. Mengakses member dari superclass
Untuk mengakses member dari superclass maka keyword super sanggup digunakan.
Contoh:
public class Kendaraan { protected void bergerak(){ System.out.println("Kendaraan bergerak!"); } }
public class Mobil extends Kendaraan { protected void bergerak(){ System.out.println("Mobil bergerak!"); } public void test(){ super.bergerak(); this.bergerak(); } }
Bisa dilihat baik itu superclass ataupun subclass mempunyai method yang sama yaitu bergerak(), ini ialah overriding. Kaprikornus class Mobil sanggup memanggil method bergerak milik class Kendaraan dengan keyword super().
5. Referensi dan deklarasi objek
Ini ialah bab yang menarik dari inheritance dimana rujukan dari superclass sanggup menjadi rujukan objek dari subclass.Perhatikan teladan berikut ini:
public class Kendaraan { protected void bergerak(){ } }
public class Mobil extends Kendaraan { protected void injakGas(){ } }
class Test{ public static void main(String[] args) { Kendaraan kendaraan = new Mobil(); } }
Aturannya ialah rujukan objek superclass yang berada disebelah kiri sanggup menjadi rujukan untuk sub type yang berada disebelah kanan.
Selanjutnya, bila dilanjutkan dengan pemanggilan method:
class Test{ public static void main(String[] args) { Kendaraan kendaraan = new Mobil(); kendaraan.bergerak();//bisa dilakukan kendaraan.injakGas();//tidak sanggup dilakukan } }
Ketika objek memanggil method milik superclass maka hal ini sanggup dilakukan, ibarat pada kendaraan.bergerak(). Namun, dikala subclass mempunyai method baru, maka method tersebut tidak sanggup dipanggil melalui rujukan dari superclass, ibarat kendaraan.injakGas().
6. Multi inheritance pada interface
Dalam Java, multi inheritance pada interface diizinkan untuk dilakukan. Interfaces itu sendiri merupakan 100% class abstract.
Contoh:
public interface A { public void methodA(); }
public interface B { public void methodB(); }
public interface C extends A,B { public void methodC(); }
public class D implements A, B, C { @Override public void methodA() { } @Override public void methodB() { } @Override public void methodC() { } }
Hal di atas sanggup dilakukan alasannya ialah interfaces tidak mempunyai method yang konkrit sehingga tidak menjadikan kerancuan.
7. Tidak boleh multi inheritance pada class
Java tidak membolehkan suatu class inherit pada dua class atau lebih secara langsung. Ini dikarenakan jikalau dilakukan akan menjadikan keraguan. Dan jikalau dilakukan akan menjadikan problem yang dikenal dengan Deadly Diamond of Death.
8. Aturan dikala suatu interface inherit dari interface lainnya
Ketika suatu interface ialah inherit dari interface lainnya maka sub interface tersebut mewarisi semua method dari super interface. Kemudian, sub interface itu mempunyai kebebasan apakah akan menggunakan semua method tersebut atau tidak.Contoh:
public interface Workable { public void workA(); public void workB(); public void workC(); }
public interface Repairable extends Workable { public void workA();//mengimplementasikan method workA() public void serviceA(); public void serviceB(); public void serviceC(); }
9. Inheritance dan interface pada class
Dalam Java, dikala class inherit dari class lainnya, maka secara bersamaan juga sanggup mengimplementasikan interface.Contoh:
public interface dapatDigerakkan { public void bergerak(); }
public class KendaraanRodaDua { protected void melaju(){ } public void berhenti(){ } }
public class Motor extends KendaraanRodaDua implements dapatDigerakkan { @Override public void bergerak() { } }
10. Aturan pada acces modifier
Acces modifier public dan protected dari member superclass akan diwariskan pada subclass dikala inheritance (extends) dilakukan. Sedangkan untuk member class dengan acces modifier default hanya akan diwariskan dikala berada dalam package yang sama.11. Inheritance pada class abstract dan interface
Ketika suatu class abstract mengimplementasikan interface maka class abstract tersebut tidak perlu meng-override method dari interface tersebut. Tapi, class konkrit yang pertama kali inherit dari class abstract tersebut harus meng-override method-method tersebut.Contoh:
public interface dapatDigerakkan { public void berhenti(); public void bergerak(); public void startMesin(); public void stopMesin(); }
public abstract class KendaraanRodaDua implements dapatDigerakkan { public void startMesin(){ System.out.println("Mesin kendaraan dinyalakan!"); } public void stopMesin(){ System.out.println("Mesin kendaraan dimatikan!"); } }
public class Motor extends KendaraanRodaDua { @Override public void berhenti() { System.out.println("Motor berhenti!"); } @Override public void bergerak() { System.out.println("Motor bergerak!"); } }
Pada teladan di atas class KendaraanRodaDua ialah class abstract. Kaprikornus class ini sanggup mengimplementasikan 2 method dari interface dapatDigerakkan, yaitu method startMesin() dan stopMesin(). Oleh alasannya ialah itu, 2 method lainnya yaitu berhenti() dan bergerak() dari interface itu harus di implementasikan pada class konkrit yaitu class Motor.
Tapi, dikala class abstract tidak mengimeplementasikan sama sekali method dari interface maka class konkrit yang pertama kali inherit dari class abstract tersebut harus mengimplementasikan semua method dari interface tersebut.
Sebagai embel-embel yang juga penting diketahui, dikala suatu class konkrit (non-abstract) mengimplementasikan interface maka class tersebut wajib mengimplentasikan seluruh method-method dari interface tersebut. Arti mengimplemntasikan ialah menawarkan method dari interface itu body alasannya ialah semua method-method yang terdapat pada interface ialah method abstract yang tidak mempunyai body method.
Demikianlah klarifikasi mengeni aturan-aturan pada inheritance beserta dengan contohnya. Semoga sanggup membantu anda yang sedang memahami topik yang serupa dikala mencar ilmu Java.
Belum ada Komentar untuk "11 Hukum Inheritance Pada Java Serta Contohnya"
Posting Komentar