Bagikan melalui


Kelas Abstrak dan Tertutup dan Anggota Kelas (Panduan Pemrograman C#)

Kata kunci abstrak memungkinkan Anda membuat kelas dan anggota kelas yang tidak lengkap dan harus diimplementasikan dalam kelas turunan.

Kata kunci disegel memungkinkan Anda untuk mencegah pewarisan kelas atau anggota kelas tertentu yang sebelumnya ditandai virtual .

Kelas Abstrak dan Anggota Kelas

Kelas dapat dideklarasikan sebagai abstrak dengan meletakkan kata kunci abstract sebelum definisi kelas. Contohnya:

public abstract class A
{
    // Class members here.
}

Kelas abstrak tidak dapat diwakilkan. Tujuan dari kelas abstrak adalah untuk memberikan definisi umum dari kelas dasar yang dapat digunakan bersama oleh beberapa kelas turunan. Misalnya, perpustakaan kelas dapat mendefinisikan kelas abstrak yang digunakan sebagai parameter untuk banyak fungsinya, dan mengharuskan pemrogram yang menggunakan perpustakaan itu untuk menyediakan implementasi kelas mereka sendiri dengan membuat kelas turunan.

Kelas abstrak juga dapat mendefinisikan metode abstrak. Ini dilakukan dengan menambahkan kata kunci abstract sebelum jenis pengembalian metode. Contohnya:

public abstract class A
{
    public abstract void DoWork(int i);
}

Metode abstrak tidak memiliki implementasi, sehingga definisi metode diikuti dengan titik koma, bukan blok metode normal. Kelas turunan dari kelas abstrak harus mengimplementasikan semua metode abstrak. Ketika kelas abstrak mewarisi metode virtual dari kelas dasar, kelas abstrak dapat menimpa metode virtual dengan metode abstrak. Contohnya:

// compile with: -target:library
public class D
{
    public virtual void DoWork(int i)
    {
        // Original implementation.
    }
}

public abstract class E : D
{
    public abstract override void DoWork(int i);
}

public class F : E
{
    public override void DoWork(int i)
    {
        // New implementation.
    }
}

Jika metode virtual dideklarasikan sebagai abstract, namun hal itu masih virtual untuk semua kelas yang diwarisi dari kelas abstrak. Kelas yang mewarisi metode abstrak tidak dapat mengakses implementasi asli metode—dalam contoh sebelumnya, DoWork pada kelas F tidak dapat memanggil DoWork pada kelas D. Dengan cara ini, kelas abstrak dapat memaksa kelas turunan untuk menyediakan metode baru implementasi untuk metode virtual.

Kelas Tertutup dan Anggota Kelas

Kelas dapat dideklarasikan sebagai disegel dengan meletakkan kata kunci sealed sebelum definisi kelas. Contohnya:

public sealed class D
{
    // Class members here.
}

Kelas yang disegel tidak dapat digunakan sebagai kelas dasar. Maka dari itu, tidak bisa juga menjadi kelas abstrak. Kelas yang disegel mencegah derivasi. Karena mereka tidak pernah dapat digunakan sebagai kelas dasar, beberapa optimasi run-time dapat membuat memanggil anggota dari kelas tersegel sedikit lebih cepat.

Metode, pengindeks, properti, atau peristiwa, pada kelas turunan yang menimpa anggota virtual dari kelas dasar dapat mendeklarasikan anggota tersebut sebagai disegel pula. Hal tersebut dapat meniadakan aspek virtual anggota untuk kelas turunan lebih lanjut. Caranya adalah dengan meletakkan kata kunci sealed sebelum kata kunci dominan dalam deklarasi anggota kelas. Contohnya:

public class D : C
{
    public sealed override void DoWork() { }
}

Lihat juga