C#裡式轉換法則和is,as的用法
裡式轉換法則:父類物件可以接收子類的實體,(和java中的多型是一樣的)
父類中的方法用virtual 修飾,則繼承父類的子類可以重寫該方法,重寫是加上override關鍵字,子類中沒有重寫父類的虛方法,那呼叫時還是指向的是父類的方法,如果子類中方法簽名和父類中的一樣,但是沒有override關鍵字,如程式碼
namespace{
public class Person
{
public virtual void Hello(){ Console.writeline("父類方法") ;}
}
public class student : Person
{
public void Hello(){ Console.writeline("子類方法"); }
}
class Program
{
//這裡的 p.Hello() 實際呼叫的是父類的Hello()方法,因為子類中重寫時沒有加上override關鍵字
static void Main(string[] args){ Person p = new student(); p.Hello()
}
}
裡式轉換法則中的 is 和 as ,兩個物件需要相互轉換,is 返回的是true和false,true則能夠轉換,as返回 null,或者物件,如果能夠轉換返回轉換的物件,否則返回null。
案列
public class Person{}//一個類 public class Student:Person{}//student類 public class Teacher:Person{}//teacher類
Person person = new Student();
bool b = person is Student // ==>true
bool b1 = person is Teacher // ==>false