Pemanggilan konstruktor kelas atas dapat berlapis-lapis yang akan membentuk suatu jenjang atau rantai konstruktor. Di Java, pemanggilan konstruktor kelas atas secara berlapis ini disebut dengan konstruktor berjenjang atau rantai konstruktor (constructor chaining).
Banyak kelas di Java adalah turunan dari beberapa lapis kelas di atasnya. Ditegaskan kembali di artikel ini bahwa semua kelas Java, baik yang ada di pustaka kelas Java (Java class library) maupun kelas yang Anda definisikan sendiri (user-defined classes), langsung maupun tidak langsung adalah turunan dari kelas Object. Kelas Object adalah akar dari semua kelas di Java dan berada di puncak teratas dalam hierarki kelas.
Baca artikel Memahami Metoda toString Dari Kelas Object Di Java
Berikut ini adalah contoh program Java yang dapat menggambarkan pemanggilan kontruktor kelas atasnya secara berjenjang atau berantai. Di contoh program ini juga dijelaskan bahwa konstruktor dari superclass dikonstruksi terlebih dahulu sebelum konstruktor kelas turunannya.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | // Nama kelas : KelasA.java // Menggambarkan pemanggilan konstruktor berjenjang // Deklarasi kelas public class KelasA extends KelasB { // Metoda main public static void main(String[ ] args) { // Anonymous object // Membuat obyek tanpa variabel acuan new KelasA(); } public KelasA() { System.out.println("Konstruktor tanpa Argumen dari KelasA"); } } class KelasB extends KelasC { public KelasB() { System.out.println("Konstruktor tanpa Argumen dari KelasB"); } } class KelasC extends KelasD { public KelasC() { System.out.println("Konstruktor tanpa Argumen dari KelasC"); } } class KelasD { public KelasD() { System.out.println("Konstruktor tanpa Argumen dari KelasD"); } } |
Baris nomor 12 adalah pernyataan untuk mengkonstruksi obyek kelas KelasA tanpa variabel acuan (anonymous object). Konstruksi obyek tersebut memanggil konstruktor tanpa parameter kelas KelasA. Karena kelas KelasA adalah subclass dari kelas KelasB, maka konstruktor tanpa parameter kelas KelasB dipanggil oleh kelas KelasA. Kelas KelasB sendiri adalah subclass dari kelas KelasC, maka konstruktor tanpa parameter kelas KelasC dipanggil oleh kelas KelasB dan begitu seterusnya.
Anda dapat melihat bahwa setiap konstruktor di kelas KelasA, KelasB dan KelasC tidak ada pernyataan super() untuk memanggil konstruktor superclass. Dalam hal ini, kompiler Java secara otomatis meletakkan kata kunci super() untuk memanggil konstruktor tanpa parameter dari superclass. Sebaiknya, bila sebuah kelas memang ditujukan menjadi superclass untuk kelas lain, akan lebih baik bila kelas tersebut menyediakan konstruktor tanpa parameter untuk menghindari error.