base

 

base 關鍵字對於有物件導向觀念的開發者並不陌生,

而本篇文章只是針對 base (C# 參考) 文章做個筆記而已,避免自己忘記。

 

1、base 關鍵字是用來存取衍生類別中基底類別的成員

2、從靜態方法使用 base 關鍵字是錯誤的。

3、所存取的基底類別是類別宣告中所指定的基底類別。

例如,如果您指定 class ClassB : ClassA,則不論 ClassA 的基底類別為何,都會從 ClassB 存取 ClassA 成員。

4、僅允許在「建構函式」、「執行個體方法」或「執行個體屬性存取子」中進行基底類別存取。

5、可以想像成基底類別名稱的別名。

 

範例一、

於執行個體方法中進行基底類別存取

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Employee E = new Employee();
            E.GetInfo();
            Console.ReadKey();
        }
    }

    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);
        }
    }
}

 

範例二、

示範如何指定在建立衍生類別的執行個體時呼叫的基底類別建構函式。

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            DerivedClass md = new DerivedClass();
            DerivedClass md1 = new DerivedClass(1);
            Console.ReadKey();
        }
    }

    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)
        {
        }
    }
}