Csharp/C#教程:C#引用访问权限分析分享

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

同样代码表现的不同行为:
 
创建基类(Super)和派生类(Sub)每个类有一个字段field和一个公共方法getField,并且使用内联的方式初始化为1,方法getField返回字段field。C#和Java代码及运行结果如下
代码如下:classSuper
{
       publicintfield=0;
 
       publicintgetField()
       {
           returnfield;
       }
}

classSub:Super
{
       publicintfield=1;
 
       publicintgetField()
       {
           returnfield;
       }
}

classProgram
{
       privatestaticvoidMain(string[]args)
       {
           Supersup=newSub();
           Console.WriteLine(“sup.getField()result:”+sup.getField());
           Console.ReadKey();
       }
}
 
Java代码如下:
代码如下:classSuper{
   publicintfield=0;
   publicintgetField(){
       returnfield;
   }
}
 
classSubextendsSuper{
   publicintfield=1;
   publicintgetField(){
       returnfield;
   }
}
 
publicclasspolymorphicDefects{
   publicstaticvoidmain(String[]args){
       Supersup=newSub();
       System.out.println(“sup.getField()result:”+sup.getField());
   }
}
 
Java代码运行结果表现出了多态性,而C#的方法并没有表现出多态性。更具体的说C#中对象sub并没有调用自己实际类型Sub中的方法而是去调用父类的方法。
 
可能用惯了Java的童鞋,突然使用C#在一点上有些许不习惯,其实C#团队在这里加入了一个概念,就是引用访问权限,一个引用代表着他的访问权限,Sub的引用仅能对Sub类型中自己的方法进行访问。
 
当然C#的方法不是支持多态,只是使用虚方法来表现方法的多态性,可看下面的例子:
代码如下:classSuper
{
       publicintfield=0;
 
       publicvirtualintgetField()
       {
           returnfield;
       }
}

classSub:Super
{
       publicintfield=1;
 
       publicoverrideintgetField()
       {
           returnfield;
       }
}

classProgram
{
       privatestaticvoidMain(string[]args)
       {
           Supersup=newSub();
           Console.WriteLine(“sup.getField()result:”+sup.getField());
           Console.ReadKey();
       }
}
 
接下来我想说说我对C#引入引用访问权限的看法。引入了引用访问权限的C#比Java更加的强大了,也比Java多了一个新的特性,当然事情都是有两个方面的,对引用那个访问权限的引入也使C#更加复杂与不易。

希望本文所述对大家的C#程序设计有所帮助。

您可能感兴趣的文章:C#判断程序是否是管理员权限运行的方法代码示例c#通过进程调用cmd判断登录用户权限代码分享C#枚举中的位运算权限分配浅谈c#解决IIS写Excel的权限问题C#权限管理和设计浅谈C#利用WMI操作DNS服务器(可远程操作,需要相应权限)采用C#代码动态设置文件权限

C++使用WideCharToMultiByte函数生成UTF-8编码文件的方法

详解C++的模板中typename关键字的用法

上述就是C#学习教程:C#引用访问权限分析分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/905911.html

(0)
上一篇 2021年10月23日
下一篇 2021年10月23日

精彩推荐