c#【里氏替換】--烏雲後依然是燦爛的晴天

里氏替換

子類想調用父類中的屬性或方法不可以直接調用,需要將子類轉換成父類,通過父類去調用,轉換的過程是里氏轉換

父類子類轉換四種情況

其中有兩種情況代碼沒有錯誤,但是會報異常,在代碼中已經分析

			 // 1.
            //Student stu = new Student();//子類轉換成父類,可以隱式轉換
            //Person p = stu;         
            //p.Show();
            //Console.ReadKey();

            //2.
            //Person p = new Teacher();//
            //Teacher t = (Teacher)p;   //如果 new的時候 new的是子類,那麼再轉換這個子類的時候可以
            //t.SayHi();

            //3.代碼正確,但是會報異常(子類老師轉換成學生)
            //Person p = new Teacher();//如果new的是子類,轉換的時候 轉的另一個子類,報異常
            //Student stu = (Student)p;
            //stu.SayHello();
            //Console.ReadKey();
            //4  代碼正確會報異常,父類不知能直接轉爲子類(父親去當兒子)
            //Person p = new Person();
            //Student stu = (Student)p;

IS/AS

is轉換:返回的是bool值,true爲能轉換,false不能轉換。
as轉換:使用as轉換時,如果轉換不了,不報異常,返回值爲Null.在調用方法時報異常。 As可以直接轉 is可以做as做的事情

			Person p = new Student();
            bool result = p is Teacher;
            if (result)
            {
                Teacher t = (Teacher)p;
                t.SayHi();
            }
            else
            {
                Console.WriteLine("轉換不了");
            }
            Console.ReadKey();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章