kelas (Referensi C#)

Kelas dideklarasikan menggunakan kata kunci class, seperti yang ditunjukkan di dalam contoh berikut:

class TestClass
{
    // Methods, properties, fields, events, delegates
    // and nested classes go here.
}

Keterangan

Hanya warisan tunggal yang diizinkan di dalam C#. Dengan kata lain, kelas hanya dapat mewarisi implementasi dari satu kelas dasar. Namun, kelas dapat mengimplementasikan lebih dari satu antarmuka. Tabel berikut menunjukkan contoh pewarisan kelas dan implementasi antarmuka:

Warisan Contoh
Tidak class ClassA { }
Tunggal class DerivedClass : BaseClass { }
Tidak ada, mengimplementasikan dua antarmuka class ImplClass : IFace1, IFace2 { }
Tunggal, mengimplementasikan satu antarmuka class ImplDerivedClass : BaseClass, IFace1 { }

Kelas yang Anda deklarasikan langsung di dalam namespace layanan, tidak ditumpuk di dalam kelas lain, dapat berupa publik atau internal. Secara default, kelas adalah internal.

Anggota kelas, termasuk kelas bertumpuk, dapat berupa publik, internal yang dilindungi, dilindungi, internal, privat, atau privat yang dilindungi. Secara default, anggota adalah private.

Untuk informasi selengkapnya, lihat Pengubah Akses.

Anda dapat mendeklarasikan kelas generik yang memiliki parameter jenis. Untuk informasi selengkapnya, lihat Kelas Generik.

Kelas dapat berisi deklarasi anggota berikut ini:

Contoh

Contoh berikut ini menunjukkan bidang kelas, konstruktor, dan metode. Ini juga menunjukkan instans objek, dan mencetak data instans. Di dalam contoh ini, dua kelas dideklarasikan. Kelas pertama, Child, berisi dua bidang privat (name dan age), dua konstruktor publik dan satu metode publik. Kelas kedua, StringTest, digunakan untuk mengandung Main.

class Child
{
    private int age;
    private string name;

    // Default constructor:
    public Child()
    {
        name = "N/A";
    }

    // Constructor:
    public Child(string name, int age)
    {
        this.name = name;
        this.age = age;
    }

    // Printing method:
    public void PrintChild()
    {
        Console.WriteLine("{0}, {1} years old.", name, age);
    }
}

class StringTest
{
    static void Main()
    {
        // Create objects by using the new operator:
        Child child1 = new Child("Craig", 11);
        Child child2 = new Child("Sally", 10);

        // Create an object using the default constructor:
        Child child3 = new Child();

        // Display results:
        Console.Write("Child #1: ");
        child1.PrintChild();
        Console.Write("Child #2: ");
        child2.PrintChild();
        Console.Write("Child #3: ");
        child3.PrintChild();
    }
}
/* Output:
    Child #1: Craig, 11 years old.
    Child #2: Sally, 10 years old.
    Child #3: N/A, 0 years old.
*/

Komentar

Perhatikan bahwa di dalam contoh sebelumnya, bidang privat (name dan age) hanya dapat diakses melalui metode publik kelas Child. Misalnya, Anda tidak dapat mencetak nama anak, dari metode Main, menggunakan pernyataan seperti ini:

Console.Write(child1.name);   // Error

Mengakses anggota privat Child dari Main hanya akan memungkinkan jika Main merupakan anggota dari kelas.

Jenis yang dideklarasikan di dalam kelas tanpa pengubah akses secara default adalah private, sehingga anggota data di dalam contoh ini tetap berupa private jika kata kunci dihapus.

Terakhir, perhatikan bahwa untuk objek yang dibuat menggunakan konstruktor yang tidak memiliki parameter (child3), bidang age diinisialisasi ke nol secara default.

Spesifikasi bahasa C#

Untuk informasi selengkapnya, lihat Spesifikasi Bahasa C#. Spesifikasi bahasa adalah sumber definitif untuk sintaks dan penggunaan C#.

Lihat juga