base (Referensi C#)

Kata base kunci digunakan untuk mengakses anggota kelas dasar dari dalam kelas turunan. Gunakan jika Anda ingin:

  • Panggil metode pada kelas dasar yang telah diambil alih oleh metode lain.

  • Tentukan konstruktor kelas dasar mana yang harus dipanggil saat membuat instans kelas turunan.

Akses kelas dasar hanya diizinkan dalam konstruktor, dalam metode instans, dan dalam aksesor properti instans.

base Menggunakan kata kunci dari dalam metode statis akan memberikan kesalahan.

Kelas dasar yang diakses adalah kelas dasar yang ditentukan dalam deklarasi kelas. Misalnya, jika Anda menentukan class ClassB : ClassA, anggota ClassA diakses dari ClassB, terlepas dari kelas dasar ClassA.

Contoh 1

Dalam contoh ini, kelas dasar dan kelas PersonEmployee turunan memiliki metode bernama GetInfo. Dengan menggunakan base kata kunci, dimungkinkan untuk memanggil GetInfo metode kelas dasar dari dalam kelas turunan.

public class Person
{
    protected string ssn = "444-55-6666";
    protected string name = "John L. Malgraine";

    public virtual void GetInfo()
    {
        Console.WriteLine("Name: {0}", name);
        Console.WriteLine("SSN: {0}", ssn);
    }
}
class Employee : Person
{
    public string id = "ABC567EFG";
    public override void GetInfo()
    {
        // Calling the base class GetInfo method:
        base.GetInfo();
        Console.WriteLine("Employee ID: {0}", id);
    }
}

class TestClass
{
    static void Main()
    {
        Employee E = new Employee();
        E.GetInfo();
    }
}
/*
Output
Name: John L. Malgraine
SSN: 444-55-6666
Employee ID: ABC567EFG
*/

Untuk contoh tambahan, lihat baru, virtual, dan ambil alih.

Contoh 2

Contoh ini menunjukkan cara menentukan konstruktor kelas dasar yang dipanggil saat membuat instans kelas turunan.

public class BaseClass
{
    int num;

    public BaseClass()
    {
        Console.WriteLine("in BaseClass()");
    }

    public BaseClass(int i)
    {
        num = i;
        Console.WriteLine("in BaseClass(int i)");
    }

    public int GetNum()
    {
        return num;
    }
}

public class DerivedClass : BaseClass
{
    // This constructor will call BaseClass.BaseClass()
    public DerivedClass() : base()
    {
    }

    // This constructor will call BaseClass.BaseClass(int i)
    public DerivedClass(int i) : base(i)
    {
    }

    static void Main()
    {
        DerivedClass md = new DerivedClass();
        DerivedClass md1 = new DerivedClass(1);
    }
}
/*
Output:
in BaseClass()
in BaseClass(int i)
*/

Spesifikasi bahasa C#

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

Lihat juga