我有关于Oops Concepts
的3个问题:
命名空间中类的默认访问修饰符是什么,我试图将修饰符应用于类,.net编译器抛出错误说“在命名空间中定义的元素不能明确声明为私有,受保护或受保护的朋友”。下面是我的代码。
protected internal and internal
之间有什么区别,因为内部可以在程序集中使用,而protected internal可以在同一个类中使用,继承类或在同一个程序集中的其他类< / strong>即可。基本上这就是装配的意思。
Class1 and Class2
,则Class1有Method1()
而Class2
有Method2()
,如果两者都在继承链中,则Class1 c = new Class2();
应允许访问Method2();
,因为此处新对象属于Class2
,为什么.net允许Method1();
我试过了。答案 0 :(得分:2)
1)内部
2) 派生类(可能在不同的程序集中)或同一程序集中的任何代码都可以访问
3)您引用的class1
没有method2
- 您需要引用class2
才能调用method2
。< / p>
答案 1 :(得分:1)
关于问题2:
protected表示所有派生类都可以访问该方法,internal表示此程序集中的所有类都可以访问该方法。 protected internal是两者的结合。
这是一篇关于受保护内部方法的非常有趣的博客文章:
http://blogs.msdn.com/b/ericlippert/archive/2010/03/25/knights-knaves-protected-and-internal.aspx
答案 2 :(得分:0)
1)存在,因为您需要将该类声明为受保护的或任何更高的访问级别,例如公众
3)子类继承超类成员(在本例中是一个方法)。即使您将class2分配给class1,反向也无法工作。