手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#引用访问权限分析
C#引用访问权限分析
摘要:本文实例分析了C#引用访问权限问题。分享给大家供大家参考。具体分析如下:同样代码表现的不同行为:创建基类(Super)和派生类(Sub)每个...

本文实例分析了C#引用访问权限问题。分享给大家供大家参考。具体分析如下:

同样代码表现的不同行为:

创建基类(Super)和派生类(Sub)每个类有一个字段field和一个公共方法getField,并且使用内联的方式初始化为1,方法getField返回字段field。C#和Java代码及运行结果如下

复制代码 代码如下: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#程序设计有所帮助。

【C#引用访问权限分析】相关文章:

C# DataTable的详细用法分享

基于C#委托的深入分析

C#利用WMI操作DNS服务器(可远程操作,需要相应权限)

C# 批处理调用方法

C#异步调用的好处和方法分享

基于C#中XmlWriter写入Xml的深入分析

c# 引用类型和值类型

C# DES加密算法中向量的作用详细解析

描述C#多线程中lock关键字的使用分析

深入C#字符串和享元(Flyweight)模式的使用分析

精品推荐
分类导航