C#引用訪問權(quán)限分析
本文實例分析了C#引用訪問權(quán)限問題。分享給大家供大家參考。具體分析如下:
同樣代碼表現(xiàn)的不同行為:
創(chuàng)建基類(Super)和派生類(Sub)每個類有一個字段field和一個公共方法getField,并且使用內(nèi)聯(lián)的方式初始化為1,方法getField返回字段field。C#和Java代碼及運行結(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代碼運行結(jié)果表現(xiàn)出了多態(tài)性,而C#的方法并沒有表現(xiàn)出多態(tài)性。更具體的說C#中對象sub并沒有調(diào)用自己實際類型Sub中的方法而是去調(diào)用父類的方法。
可能用慣了Java的童鞋,突然使用C#在一點上有些許不習(xí)慣,其實C#團隊在這里加入了一個概念,就是引用訪問權(quán)限,一個引用代表著他的訪問權(quán)限,Sub的引用僅能對Sub類型中自己的方法進行訪問。
當(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();
}
}
接下來我想說說我對C#引入引用訪問權(quán)限的看法。引入了引用訪問權(quán)限的C#比Java更加的強大了,也比Java多了一個新的特性,當(dāng)然事情都是有兩個方面的,對引用那個訪問權(quán)限的引入也使C#更加復(fù)雜與不易。
希望本文所述對大家的C#程序設(shè)計有所幫助。
相關(guān)文章
C# 使用Microsoft Edge WebView2的相關(guān)總結(jié)
這篇文章主要介紹了C# 使用Microsoft Edge WebView2的相關(guān)總結(jié),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-02-02
C#利用ASP.NET?Core開發(fā)學(xué)生管理系統(tǒng)詳解
隨著技術(shù)的進步,跨平臺開發(fā)已經(jīng)成為了標(biāo)配,在此大背景下,ASP.NET?Core也應(yīng)運而生。本文主要利用ASP.NET?Core開發(fā)一個學(xué)生管理系統(tǒng),感興趣的可以學(xué)習(xí)一下2022-01-01

