黑马程序员技术交流社区
标题:
C#有哪五种访问修饰符,以及他们的区别?
[打印本页]
作者:
┾——黑马
时间:
2013-9-25 23:00
标题:
C#有哪五种访问修饰符,以及他们的区别?
本帖最后由 ┾——黑马 于 2013-9-26 18:57 编辑
C#中的五种访问修饰符,publlic,protected,private,internal,protected internal的区别和联系?
作者:
于振发
时间:
2013-9-25 23:42
C#中的五种访问修饰符,publlic,protected,private,internal,protected internal
public 公有访问。不受任何限制。
private 私有访问。只限于本类成员访问,子类,实例都不能访问。
protected 保护访问。只限于本类和子类访问,实例不能访问。
internal 内部访问。只限于本项目内访问,其他不能访问。
protected internal 内部保护访问。只限于本项目或是子类访问,其他不能访问
希望能够帮到你!
作者:
-___Is、_C
时间:
2013-9-26 09:51
修饰符有五种:private(私有的)、protected(受保护的)、internal(程序集内部的)、public(公开的)、以及protectde internal(只有本程序内或者继承于该类的类型可以访问)。
可以使用修饰符的对象:命名空间、类、结构、枚举、接口、委托、函数、变量。
Private: 类自身调用。
Protected: 以包含Protected 的类开始,延伸到所有派生类,均可访问。
Public:不用多说, 所有的类均可访问。
Internal: 同一个程序集中的所有类均可访问,可以想象成Public 的其中一个程序集集合。
Protected Internal : Internal 和 Protected的并集, 同一个程序集中的所有类,以及所有程序集中的子类。
作者:
韩继新
时间:
2013-9-26 10:06
public 公有访问。不受任何限制。
private 私有访问。只限于本类成员访问,子类,实例都不能访问。
protected 保护访问。只限于本类和子类访问,实例不能访问。
internal 内部访问。只限于本项目内访问,其他不能访问。
protected internal 内部保护访问。只限于本项目或是子类访问,其他不能访问
如果有不明白的继续探讨
作者:
段朝骞
时间:
2013-9-26 12:01
本帖最后由 段朝骞 于 2013-9-26 12:04 编辑
C#中有4个访问修饰符(5个访问修饰级别):
public:访问不受限制。
protected:访问仅限于包含类或从包含类派生的类型。
Internal:访问仅限于当前程序集。
protected internal:访问仅限于当前程序集或从包含类派生的类型。(就是protected和internal集合的并集)
private:访问仅限于包含类型。
在类这个级别(命名空间内)不写访问修饰符,默认为Internal。
在类成员中(类方法外)不写访问修饰符,默认的访问修饰符为private
作者:
念念念念_、
时间:
2013-9-26 12:09
本帖最后由 念念念念_、 于 2013-9-26 12:12 编辑
对于楼主的这个问题,前段时间我正好整理好了笔记,现在分享下:
分别是:
private 私有的 (只能在当前类内部访问)
protected 受保护的(只能在类内部以及所有子类内部访问)
internal 只能在当前程序集内部访问
protected internal 在类内部以及所有子类内部可以访问,也可在当前程序集内访问
public 公共的 (在任何地方都可以访问)
protected与internal没有可比性。protected是在当前类内部写,所有子类都可以访问。而internal是在同一个程序集中可以访问。
假如不再同一个程序集中,但是依然存在继承关系,那么protected访问修饰符类型依然可以访问
---------------------------------------------------------------------------------------
子类继承父类的时候,子类的修饰符不能比父类高。
例如:
//可访问性不一致
class Person //默认是internal修饰符
{
public string Name
{
get;
set;
}
}
public class student:Person // 所以这里不能继承,会报错
{
}
public class Person
{
public string Name
{
get;
set;
}
}
public class Myclass
{
//要求方法参数的访问性级别与方法本身的访问级别一致
public void Do(Person p)
{
Console.WriteLine(p.Name);
Console.ReadKey();
}
}
可访问性不一致,方法的参数和返回值的类型必须与方法本身的访问修饰符一致
--------------------------------------------------------------------------
#region 可访问性不一致,属性的访问级别与属性的类型的访问级别
class class1
{
}
public class Person1
{
public class1 c
{
get;
set;
}
}
#endregion
作者:
Always.
时间:
2013-9-26 13:40
public 公有访问;可以在任何地方被访问。
private 私有访问;只能在本类中被访问。
internal 内部访问;只能在本项目中被访问。
protected 保护访问。只能在本类和子类中被访问。
protected internal 内部保护访问。能够在本类和所有子类中被访问。
值得注意的是:
在类这个级别,不写访问修饰符,默认为internal。
在一个类中定义属性或者方法的时候,没有写访问修饰符,则默认为private
而且在方法中不能写无法写访问修饰符。
作者:
☜⑦圊⑥慾➹沼
时间:
2013-9-26 13:45
private 私有访问修饰符,只能在类内部访问该修饰符修饰的类成员(类不能被标记为私有的)
internal 内部访问修饰符,只能在程序级内部访问该修饰符修饰的类(新建类如果不加修饰符默认为internal修饰符修饰)
protected 保护访问修饰符,只能在本类或者继承自本类的子类中才能被访问
protected internal 保护+内部 访问修饰符,在程序集内部或者继承自本类的子类中才能被访问
public 共有访问修饰符,在程序的任何地方都能访问
使用反射等方法可以访问私有 内部 保护等修饰符修饰的类或成员属性
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2