C# 引用访问权限,很多老手都不懂_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > C# 引用访问权限,很多老手都不懂

C# 引用访问权限,很多老手都不懂

 2014/11/21 11:57:17  GC2013  程序员俱乐部  我要评论(0)
  • 摘要:同样代码表现的不同行为创建基类(Super)和派生类(Sub)每个类有一个字段field和一个公共方法getField,并且使用内联的方式初始化为1,方法getField返回字段field。C#和Java代码及运行结果如下C#复制代码classSuper{publicintfield=0;publicintgetField(){returnfield;}}classSub:Super{publicintfield=1;publicintgetField(){returnfield;}
  • 标签:C# 访问权限

同样代码表现的不同行为

  创建基类(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#更加复杂与不易。   不知道其他童鞋有什么看法没,可在评论区多交流。
上一篇: 测试一下,你有没有社交网络病 下一篇: 没有下一篇了!
发表评论
用户名: 匿名