Konstruktor C#: Jenis, Contoh, dan Pola Lanjutan
Konstruktor C#
Temukan cara konstruktor menginisialisasi objek di C#, mencakup semua jenis konstruktor, pola, dan praktik terbaik.
Di C#, konstruktor adalah metode khusus yang dipanggil secara otomatis saat instance baru dari kelas dibuat. Berbeda dengan metode biasa, konstruktor:
- memiliki nama yang sama dengan kelas
- tidak mengembalikan nilai
Membuat Konstruktor C#
Definisikan konstruktor di dalam kelas dengan mencocokkan nama kelas:
class Car { // konstruktor Car() { // kode inisialisasi } }
Di sini, Car() adalah konstruktor. Ini dipanggil menggunakan kata kunci new:
new Car();
Misalnya:
Car car1 = new Car();
Lihat juga: C# Class and Objects.
Jenis Konstruktor
Kategori konstruktor yang umum meliputi:
- Konstruktor tanpa parameter (default)
- Konstruktor berparameter
- Konstruktor salinan
- Konstruktor private
- Konstruktor statis
1. Konstruktor Tanpa Parameter
Konstruktor tanpa parameter disebut konstruktor tanpa parameter atau default. Contoh:
using System; namespace ConstructorDemo { class Car { // konstruktor tanpa parameter Car() { Console.WriteLine("Car Constructor"); } static void Main(string[] args) { new Car(); Console.ReadLine(); } } }
Output
Car Constructor
2. Konstruktor Berparameter
Konstruktor dapat menerima argumen untuk menginisialisasi field instance:
using System; namespace ConstructorDemo { class Car { string brand; int price; // konstruktor berparameter Car(string theBrand, int thePrice) { brand = theBrand; price = thePrice; } static void Main(string[] args) { Car car1 = new Car("Bugatti", 50000); Console.WriteLine("Brand: " + car1.brand); Console.WriteLine("Price: " + car1.price); Console.ReadLine(); } } }
Output
Brand: Bugatti Price: 50000
3. Konstruktor Default
Jika Anda menghilangkan konstruktor, kompiler menyediakan konstruktor tanpa parameter implisit yang menginisialisasi field ke nilai default mereka. Contoh:
using System; namespace ConstructorDemo { class Program { int a; static void Main(string[] args) { Program p1 = new Program(); Console.WriteLine("Default value of a: " + p1.a); Console.ReadLine(); } } }
Output
Default value of a: 0
Field numerik default ke 0, sementara string dan objek default ke null.
4. Konstruktor Salinan
Konstruktor salinan membuat instance baru dengan menyalin status objek lain:
using System; namespace ConstructorDemo { class Car { string brand; // konstruktor utama Car(string theBrand) { brand = theBrand; } // konstruktor salinan Car(Car c1) { brand = c1.brand; } static void Main(string[] args) { Car car1 = new Car("Bugatti"); Console.WriteLine("Brand of car1: " + car1.brand); Car car2 = new Car(car1); Console.WriteLine("Brand of car2: " + car2.brand); Console.ReadLine(); } } }
Output
Brand of car1: Bugatti Brand of car2: Bugatti
5. Konstruktor Private
Menandai konstruktor private mencegah instantiasi eksternal, berguna untuk pola singleton atau kelas utilitas.
Contoh
using System; namespace ConstructorDemo { class Car { private Car() { Console.WriteLine("Private Constructor"); } } class CarDrive { static void Main(string[] args) { // Car car1 = new Car(); // kesalahan waktu kompilasi Console.ReadLine(); } } }
Kesalahan:
error CS0122: 'Car.Car()' is inaccessible due to its protection level
Catatan: Saat konstruktor private, semua anggota kelas harus statis untuk memungkinkan akses melalui nama kelas.
6. Konstruktor Statis
Konstruktor statis berjalan sekali per tipe, sebelum anggota instance atau statis diakses. Ini tidak dapat dipanggil langsung dan tidak boleh memiliki parameter.
using System; namespace ConstructorDemo { class Car { static Car() { Console.WriteLine("Static Constructor"); } Car() { Console.WriteLine("Default Constructor"); } static void Main(string[] args) { Car car1 = new Car(); Car car2 = new Car(); Console.ReadLine(); } } }
Output
Static Constructor Default Constructor Default Constructor
Catatan: Hanya satu konstruktor statis per kelas; tidak boleh memiliki parameter atau modifier akses.
Overloading Konstruktor C#
Definisikan beberapa konstruktor dengan daftar parameter yang berbeda untuk menyediakan pembuatan objek yang fleksibel. Contoh:
using System; namespace ConstructorOverloadDemo { class Car { Car() { Console.WriteLine("Car constructor"); } Car(string brand) { Console.WriteLine("Car constructor with one parameter"); Console.WriteLine("Brand: " + brand); } static void Main(string[] args) { Car car = new Car(); Console.WriteLine(); Car car2 = new Car("Bugatti"); Console.ReadLine(); } } }
Output
Car constructor Car constructor with one parameter Brand: Bugatti
Kompiler memilih konstruktor yang cocok berdasarkan jumlah dan tipe argumen. Pelajari lebih lanjut di C# Constructor Overloading.