C#引用訪問權(quán)限分析
本文實(shí)例分析了C#引用訪問權(quán)限問題。分享給大家供大家參考。具體分析如下:
同樣代碼表現(xiàn)的不同行為:
創(chuàng)建基類(Super)和派生類(Sub)每個(gè)類有一個(gè)字段field和一個(gè)公共方法getField,并且使用內(nèi)聯(lián)的方式初始化為1,方法getField返回字段field。C#和Java代碼及運(yùn)行結(jié)果如下
{
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代碼如下:
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代碼運(yùn)行結(jié)果表現(xiàn)出了多態(tài)性,而C#的方法并沒有表現(xiàn)出多態(tài)性。更具體的說C#中對(duì)象sub并沒有調(diào)用自己實(shí)際類型Sub中的方法而是去調(diào)用父類的方法。
可能用慣了Java的童鞋,突然使用C#在一點(diǎn)上有些許不習(xí)慣,其實(shí)C#團(tuán)隊(duì)在這里加入了一個(gè)概念,就是引用訪問權(quán)限,一個(gè)引用代表著他的訪問權(quán)限,Sub的引用僅能對(duì)Sub類型中自己的方法進(jìn)行訪問。
當(dāng)然C#的方法不是支持多態(tài),只是使用虛方法來表現(xiàn)方法的多態(tài)性,可看下面的例子:
{
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();
}
}
接下來我想說說我對(duì)C#引入引用訪問權(quán)限的看法。引入了引用訪問權(quán)限的C#比Java更加的強(qiáng)大了,也比Java多了一個(gè)新的特性,當(dāng)然事情都是有兩個(gè)方面的,對(duì)引用那個(gè)訪問權(quán)限的引入也使C#更加復(fù)雜與不易。
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
C#數(shù)據(jù)結(jié)構(gòu)之單鏈表(LinkList)實(shí)例詳解
這篇文章主要介紹了C#數(shù)據(jù)結(jié)構(gòu)之單鏈表(LinkList)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了單鏈表的原理、定義與C#具體實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11Unity3D實(shí)現(xiàn)物體旋轉(zhuǎn)縮放移動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Unity3D實(shí)現(xiàn)物體旋轉(zhuǎn)縮放移動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02C# string轉(zhuǎn)換為幾種不同編碼的Byte[]的問題解讀
這篇文章主要介紹了C# string轉(zhuǎn)換為幾種不同編碼的Byte[]的問題解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02C#使用NPOI實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出功能
這篇文章主要為大家詳細(xì)介紹了C#使用NPOI實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02WPF自定義TreeView控件樣式實(shí)現(xiàn)QQ聯(lián)系人列表效果
TreeView控件在項(xiàng)目中使用比較頻繁,下面這篇文章主要給大家介紹了關(guān)于WPF自定義TreeView控件樣式實(shí)現(xiàn)QQ聯(lián)系人列表效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。2018-04-04