码迷,mamicode.com
首页 > Windows程序 > 详细

C# 引用访问权限

时间:2014-11-14 21:11:48      阅读:379      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   ar   使用   sp   java   div   

同样代码表现的不同行为

创建基类(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();
        }
    }

 bubuko.com,布布扣

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());
    }
}

 

 

bubuko.com,布布扣

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();
        }
    }

 

bubuko.com,布布扣

接下来我想说说我对C#引入引用访问权限的看法。引入了引用访问权限的C#比Java更加的强大了,也比Java多了一个新的特性,当然事情都是有两个方面的,对引用那个访问权限的引入也使C#更加复杂与不易。

不知道其他童鞋有什么看法没,可在评论区多交流。

C# 引用访问权限

标签:style   blog   http   color   ar   使用   sp   java   div   

原文地址:http://www.cnblogs.com/accessking/p/4098112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!