Nested Class dalam Bahasa Pemrograman C#

Nested Class dalam Bahasa Pemrograman C#
Photo by Andrew Neel / Unsplash

Pernah nggak kepikiran kalau ada class yang sebenarnya cuma dipakai sama satu class lain doang? Nah, biar nggak bikin kode jadi berantakan, kita bisa pakai nested class! Nested class ini kayak "class dalam class" yang digunakan untuk mengelompokkan sesuatu yang benar-benar berhubungan erat.

Jadi, kalau kamu lagi bikin sistem kendaraan, misalnya, pasti ada mesin di dalam mobil. Nah, mesin itu nggak perlu jadi class terpisah karena dia cuma dipakai dalam mobil, kan? Di situlah kita bisa pakai nested class.

Yuk, kita bahas apa itu nested class dalam C#, kapan harus menggunakannya, dan gimana cara implementasinya dengan gaya santai biar gampang dipahami!

1. Apa Itu Nested Class dalam C#?

Nested class adalah class yang dideklarasikan di dalam class lain. Jadi, class dalam ini nggak bisa diakses dari luar tanpa lewat class induknya (outer class). Ini sangat berguna untuk kode yang lebih rapi dan modular.

Ciri-Ciri Nested Class

Mengelompokkan class yang saling berhubungan.
Bisa mengakses anggota private dari class induk.
Lebih aman karena tidak bisa langsung diakses dari luar.
Bisa bersifat private, protected, public, atau static.

Analoginya gampang! Bayangkan nested class itu kayak ruangan dalam rumah. Rumah adalah class utama, sementara ruang tamu, dapur, dan kamar adalah nested class. Kamu nggak bisa masuk kamar kalau nggak lewat rumah dulu, kan?

Sintaks Nested Class

class Rumah {
    class Kamar {
        // Implementasi class dalam
    }
}

2. Contoh Penggunaan Nested Class dalam C#

2.1 Contoh Dasar Nested Class

using System;

class Mobil {
    public class Mesin {
        public void Start() {
            Console.WriteLine("Mesin dinyalakan.");
        }
    }
}

class Program {
    static void Main() {
        Mobil.Mesin mesin1 = new Mobil.Mesin();
        mesin1.Start();
    }
}

Output:

Mesin dinyalakan.

Penjelasan:

  • Mobil adalah outer class.
  • Mesin adalah nested class dalam Mobil.
  • Mobil.Mesin digunakan untuk mengakses nested class dari luar.

3. Nested Class dengan Akses Private

Kalau kita pengen nested class ini cuma bisa diakses oleh class induknya, kita bisa pakai modifier private.

class Mobil {
    private class Mesin {
        public void Start() {
            Console.WriteLine("Mesin mobil dinyalakan.");
        }
    }
    
    public void HidupkanMobil() {
        Mesin mesin = new Mesin();
        mesin.Start();
    }
}

class Program {
    static void Main() {
        Mobil mobil1 = new Mobil();
        mobil1.HidupkanMobil();
    }
}

Output:

Mesin mobil dinyalakan.

Kenapa pakai private?

  • Mesin ini cuma dipakai di dalam Mobil.
  • Kalau class lain coba akses langsung Mesin, pasti bakal error.

4. Static Nested Class

Ada juga static nested class, yang bisa langsung dipanggil tanpa harus bikin instance dari class induknya.

class Perusahaan {
    public static string Nama = "Tech Corp";
    
    public static class HR {
        public static void Info() {
            Console.WriteLine("Departemen HR di " + Nama);
        }
    }
}

class Program {
    static void Main() {
        Perusahaan.HR.Info();
    }
}

Output:

Departemen HR di Tech Corp

Kalau nggak pakai static, kita harus buat object dulu sebelum mengaksesnya. Jadi ini lebih efisien kalau kita cuma butuh akses langsung.

5. Kapan Harus Pakai Nested Class?

Gunakan nested class jika:

  • Class tersebut hanya digunakan oleh satu class lain (misalnya Mesin cuma ada di dalam Mobil).
  • Ingin membatasi akses class agar lebih aman.
  • Ingin membuat kode lebih terstruktur dan mudah dipahami.

Jangan pakai nested class jika:

  • Class punya fungsi yang lebih luas dan bisa digunakan oleh banyak class lain.
  • Menggunakan nested class malah bikin kode jadi lebih sulit dibaca.

6. Kesimpulan

  • Nested class adalah class yang dideklarasikan di dalam class lain untuk membuat kode lebih rapi dan modular.
  • Bisa bersifat private, public, atau static, tergantung kebutuhan.
  • Bagus untuk class yang memang hanya digunakan oleh satu class utama.
  • Gunakan nested class dengan bijak supaya kode tetap mudah dipahami dan dirawat.

Jadi, kalau ada bagian dari kode yang cuma relevan buat satu class tertentu, nested class bisa jadi pilihan terbaik!

Read more