c# 父類的引用指向子類的實例


在C#中關於父類對子類的引用大概有這么幾種:

父類是接口,普通類,抽象類

public interface A
    {
        void a();
    }

    public class B
    {
        public void b()
        {
            Console.WriteLine("B-b");
        }

        public virtual void bb()
        {
            Console.WriteLine("B-bb");
        }
    }

    public abstract class C
    {
        public abstract void c();
    }

    public class AA : A
    {
        public void a()
        {
            Console.WriteLine("AA-a");
        }
    }

    public class BB : B
    {
        public void b()
        {
            Console.WriteLine("BB-b");
        }
        public override void bb()
        {
            Console.WriteLine("BB-b");
        }
    }

    public class CC : C
    {
        public override void c()
        {
            Console.WriteLine("CC-c");
        }
    }
A a = new AA();
B b = new BB();
C c = new CC();
a.a();
b.b();
b.bb();
c.c();

運行結果:

個人理解:

1、父類的引用可以調用父類中定義的屬性和方法,對於在父類中沒有的定義,在子類中單獨進行了定義,父類的引用是不可以調用的

2、對於父類和子類同時定義了某方法的

2.1、子類重寫了父類方法,父類的引用調用子類重寫后的方法

2.2、子類沒有重寫父類方法的,父類的引用調用父類自身的方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM