香蕉视频app

Keep on going never give up.

Let's Go

C# 學習筆記(43)里氏轉換

C#Lonely2019-05-18 15:40:3853次0條

里氏轉換:

香蕉视频app(1)、子類可以賦值給父類:如果有一個地方需要一個父類參數,我們可以給一個子類代替。

代碼示例:

using System;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            //子類賦值給父類
            //B b = new B();
            //A a = b;
            //可以簡寫成:
            A a = new B();
            //子類對象可以調用父類中的成員,但是父類對象永遠都只能調用自己的成員。
            a.A_SayHello();
            a.B_SayHello(); //這句是錯誤的,因為父類對象訪問不了子類的成員
        }        
    }
   
    class A
    {
       public void A_SayHello()
        {
            Console.WriteLine("大家好!我是A類");
        }
    }

    class B: A
    {
        public void B_SayHello()
        {
            Console.WriteLine("大家好!我是B類");
        }
    }

}

香蕉视频app(2)、如果父類中裝的是子類對象,那么可以將這個父類強轉為子類對象。

代碼示例:

//如果父類中裝的是子類對象,那么可以將這個父類強轉為子類對象。
A a = new B();            
B b = (B)a; //表示把父類強轉成子類
b.A_SayHello();
b.B_SayHello();

//is:表示類型轉換,如果轉換成功則返回true,否則返回false.
//as:如果能轉換成功,則返回對應對象,否則返回null。

//is用法:
//if (a is B)
//    B b = (B)a;
//else
//    Console.WriteLine("轉換失敗");

//as用法:
//B b = a as B;




暗錨,解決錨點偏移

文章評論

    嘿,來試試登錄吧!