繼承是物件導向的重要觀念之一,讓我們來講講它
先說它的語法
class student
{
public string firstName;
public string lastName;
public void printFullName()
{
Console.WriteLine(firstName + " " + lastName);
}
}
class forignStudent : student
{
public string passportIDNumber;
}
像黃色區塊就是繼承的語法,forignStudent這個class繼承student,中間用colon冒號來隔開.
繼承的意思就是forignStudent除了自己宣告的passportIDNumber外,也會同時擁有student宣告的firstName,lastName及printFullName的方法.
所以當我們實例化forignStudent時,也就能同時使用firstName,lastName及printFullName,如下例
static void Main()
{
forignStudent f1 = new forignStudent();
f1.firstName = "Good";
f1.lastName = "Man";
f1.passportIDNumber = "1234567";
f1.printFullName();
}
這裡要注意的是,student裡要被繼承的成員要加上public的存取控制,不然是無法使用的
接下來要說明的是子類實例化時,父類的建構式也會執行
class student
{
public student()
{
Console.WriteLine("student class");
}
}
class forignStudent : student
{
public forignStudent()
{
Console.WriteLine("forignStudent class");
}
}
class Program
{
static void Main()
{
forignStudent f1 = new forignStudent();
Console.ReadKey();
}
}
上例你會得到結果是
student class
forignStudent class
表示雖然我們是實例化forignStudent,但是因為它是繼承自student,所以student的建構式也會一併被執行
既然會執行base,那我們就有辦法來選擇執行那個base,例子如下
class student
{
public student()
{
Console.WriteLine("student class");
}
public student(string className)
{
Console.WriteLine("student class with className");
}
}
class forignStudent : student
{
public forignStudent() : base("class A")
{
Console.WriteLine("forignStudent class");
}
}
上例student有二個建構式,一個無參數,另一個是有一個string參數,而在forignStudent的建構式宣告時,有特別指定使用父類string參數的建構式
所以結果會如下
student class with className
forignStudent class
留言列表