C# 引用存取權限

來源:互聯網
上載者:User

標籤:style   blog   http   color   ar   使用   sp   java   div   

同樣代碼錶現的不同行為

建立基類(Super)和衍生類別(Sub)每個類有一個欄位field和一個公用方法getField,並且使用內聯的方式初始化為1,方法getField返回欄位field。C#和Java代碼及運行結果如下

C#

    class Super    {        public int field = 0;        public int getField()        {            return field;        }    }    class Sub : Super    {        public int field = 1;        public int getField()        {            return field;        }    }    class Program    {        private static void Main(string[] args)        {            Super sup = new Sub();            Console.WriteLine("sup.getField() result:" + sup.getField());            Console.ReadKey();        }    }

 

Java

class Super {    public int field = 0;    public int getField() {        return field;    }}class Sub extends Super {    public int field = 1;    public int getField() {        return field;    }}public class polymorphicDefects {    public static void main(String[] args) {        Super sup = new Sub();        System.out.println("sup.getField() result:" + sup.getField());    }}

 

 

Java代碼運行結果表現出了多態性,而C#的方法並沒有表現出多態性。更具體的說C#中對象sub並沒有調用自己實際類型Sub中的方法而是去調用父類的方法。

可能用管了Java的童鞋,突然使用C#在一點上有些許不習慣,其實C#團隊在這裡加入了一個概念,就是引用存取權限,一個引用代表著他的存取權限,Sub的引用僅能對Sub類型中自己的方法進行訪問。

當然C#的方法不是支援多太,只是使用虛方法來表現方法的多態性,可看下面的例子:

    class Super    {        public int field = 0;        public virtual int getField()        {            return field;        }    }    class Sub : Super    {        public int field = 1;        public override int getField()        {            return field;        }    }    class Program    {        private static void Main(string[] args)        {            Super sup = new Sub();            Console.WriteLine("sup.getField() result:" + sup.getField());            Console.ReadKey();        }    }

 

接下來我想說說我對C#引入引用存取權限的看法。引入了引用存取權限的C#比Java更加的強大了,也比Java多了一個新的特性,當然事情都是有兩個方面的,對引用那個存取權限的引入也使C#更加複雜與不易。

不知道其他童鞋有什麼看法沒,可在評論區多交流。

C# 引用存取權限

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.