Menguasai Overloading Konstruktor dalam C#
Menguasai Overloading Konstruktor dalam C#
Pelajari cara merancang kelas yang fleksibel dalam C# dengan overload konstruktor—mengubah jumlah, tipe, dan urutan parameter—dilengkapi contoh praktis.
Overloading konstruktor dalam C# mirip dengan overloading metode: sebuah kelas dapat mendeklarasikan beberapa konstruktor yang berbagi nama yang sama tetapi berbeda dalam tanda tangan. Kompilator memilih konstruktor yang sesuai berdasarkan argumen yang diberikan saat objek diinstanisasi.
- Jumlah parameter yang berbeda
- Tipe parameter yang berbeda
- Urutan parameter yang berbeda
Sebelum mempelajari overloading, pastikan Anda memahami konstruktor dasar C#.
1. Mengubah Jumlah Parameter
Anda dapat overload konstruktor dengan memberikan jumlah argumen yang berbeda.
class Car { // Konstruktor tanpa parameter Car() { ... } // Konstruktor satu parameter Car(string brand) { ... } // Konstruktor dua parameter Car(string brand, int price) { ... } }
Dalam kelas Car ini, tiga konstruktor dapat coexist karena setiap tanda tangan berbeda. Kompilator memilih konstruktor yang cocok saat runtime berdasarkan jumlah argumen.
Contoh: Overloading Berdasarkan Jumlah Parameter
using System; namespace ConstructorOverload { class Car { // Konstruktor tanpa parameter Car() { Console.WriteLine("Konstruktor Car"); } // Konstruktor satu parameter Car(string brand) { Console.WriteLine("Konstruktor Car dengan satu parameter"); Console.WriteLine("Merek: " + brand); } static void Main(string[] args) { // Memanggil konstruktor tanpa parameter Car car = new Car(); Console.WriteLine(); // Memanggil konstruktor satu parameter Car car2 = new Car("Bugatti"); Console.ReadLine(); } } }
Output
Konstruktor Car Konstruktor Car dengan satu parameter Merek: Bugatti
Kompilator memanggil konstruktor yang sesuai berdasarkan argumen yang diberikan.
2. Tipe Parameter yang Berbeda
Konstruktor juga dapat di-overload ketika menerima jumlah parameter yang sama tetapi dengan tipe yang berbeda.
class Car { Car(string brand) { ... } Car(int price) { ... } }
Di sini, kedua konstruktor menerima satu argumen, namun tipe—string versus int—membedakan keduanya.
Contoh: Overloading Berdasarkan Tipe Parameter
using System; namespace ConstructorOverload { class Car { // Konstruktor dengan string Car(string brand) { Console.WriteLine("Merek: " + brand); } // Konstruktor dengan int Car(int price) { Console.WriteLine("Harga: " + price); } static void Main(string[] args) { Car car = new Car("Lamborghini"); Console.WriteLine(); Car car2 = new Car(50000); Console.ReadLine(); } } }
Output
Merek: Lamborghini Harga: 50000
3. Mengubah Urutan Parameter
Ketika konstruktor memiliki jumlah dan tipe parameter yang sama, Anda masih dapat overload dengan mengubah urutannya.
class Car { Car(string brand, int price) { ... } Car(int speed, string color) { ... } }
Tanda tangan berbeda karena urutan tipe yang berbeda.
Contoh: Overloading Berdasarkan Urutan Parameter
using System; namespace ConstructorOverload { class Car { // String pertama, lalu int Car(string brand, int price) { Console.WriteLine("Merek: " + brand); Console.WriteLine("Harga: " + price); } // Int pertama, lalu string Car(int speed, string color) { Console.WriteLine("Kecepatan: " + speed + " km/jam"); Console.WriteLine("Warna: " + color); } static void Main(string[] args) { Car car = new Car("Bugatti", 50000); Console.WriteLine(); Car car2 = new Car(60, "Merah"); Console.ReadLine(); } } }
Output
Merek: Bugatti Harga: 50000 Kecepatan: 60 km/jam Warna: Merah