黑马程序员技术交流社区

标题: private、 protected、 public、 internal 修饰符的访问权限。 [打印本页]

作者: xwh    时间: 2012-10-10 20:00
标题: private、 protected、 public、 internal 修饰符的访问权限。
关于 private、 protected、 public、 internal 修饰符的访问权限。请哪位同学来整理下吧

作者: 中山郎    时间: 2012-10-10 20:01
private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同一命名空间内可以访问。
希望对你有所吧帮助。
作者: 管海鹏    时间: 2012-10-10 20:20
C#访问修饰符

C#访问修饰符与 Java 大致相同,我们将在这一部分介绍其中的一些细微差别。每个类成员或类本身都可以用C#访问修饰符进行声明,以定义许可访问的范围。没有在其他类中声明的类只能指定 public 或 internal 修饰符,而嵌套的类(如其他的类成员)可以指定下面五个修饰符中的任何一个:
◆public:对所有类可见
◆protected:仅从派生类中可见
◆private:仅在给定的类中可见
◆internal:仅在相同的程序集中可见
◆protected internal:仅对当前的程序集或从包含类中派生的类型可见

1.public、protected 和 private 修饰符
public 修饰符使得可以从类内外的任何地方访问成员。protected 修饰符表示访问仅限于包含类或从它派生的类。private 修饰符意味着只可能从包含类型中进行访问。

2.internal 修饰符
internal 项只可以在当前的程序集中进行访问。.NET 中的程序集大致等同于 Java 的 JAR 文件,它表示可以从中构造其他程序的生成块。

3.protected internal 修饰符
protected internal 项仅对当前程序集或从包含类派生的类型可见。默认C#访问修饰符是 private,而 Java 的默认C#访问修饰符是包范围。

4.sealed 修饰符
在其类声明中带有 sealed 修饰符的类可以认为是与抽象类完全相反的类:它不能被继承。我们可以将一个类标记为 sealed,以防止其他类重写它的功能。自然地,sealed 类不能是抽象的。同时还需要注意,该结构是隐式密封的;因此,它们不能被继承。sealed 修饰符相当于在 Java 中用 final 关键字标记类。

5.readonly 修饰符
要在 C# 中定义常量,我们可以使用 const 或 readonly 修饰符替换 Java 的 final 关键字。在 C# 中,这两个修饰符之间的区别在于,const 项是在编译时处理的,而 readonly 字段是在运行时设置的。这可以允许我们修改用于在运行时确定 readonly 字段值的表达式。

这意味着给 readonly 字段的赋值可以出现在类构造函数及声明中。例如,下面的类声明了一个名为 IntegerVariable 的 readonly 变量,它是在类构造函数中初始化的:

using System;  
public class ReadOnlyClass  
{  
private readonly int IntegerConstant;  

public ReadOnlyClass ()  
{  
IntegerConstant = 5;  
}  
// We get a compile time error if we try to set the value of the readonly  
//class variable outside of the constructor  
public int IntMember  
{  
set  
{  
IntegerConstant = value;  
}  
get  
{  
return IntegerConstant;  
}  
}  

public static void Main(string[] args)  
{  
ReadOnlyClass obj= new ReadOnlyClass();  

// We cannot perform this operation on a readonly field  
obj.IntMember = 100;  
Console.WriteLine("Value of IntegerConstant field is {0}",  
obj.IntMember);  
}  
}
作者: 雷向阳    时间: 2012-10-10 23:15
private:私有成员, 在类的内部才可以访问。
protected:保护成员,该类内部和继承类中可以访问。
public: 公共成员,完全公开,没有访问限制。
internal:在同一命名空间内可以访问

这么简单的东西,随便查查就知道了吖,骗分呢吧..
作者: 徐赵华    时间: 2012-10-11 01:56
public:可以在任何地方被访问
internal:只能在本项目中访问
private:只能在本类中被访问
protected:只能在本类和子类中被访问
protected internal 对所有继承该类或在该程序集内声明的类可以访问

在一个类中定义变量和方法时,没有写访问修饰符,那么默认的访问修饰符为private;
在类的级别,不写访问修饰符时,默认的访问修饰符为internal;
枚举enum,结构struct的默认访问修饰符都是internal;
作者: chens2865    时间: 2012-10-23 11:33
private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同一命名空间内可以访问。
真心太简单,太基础。
作者: duanhuilin    时间: 2012-10-23 12:44
private:私有成员, 在类的内部才可以访问。
protected:保护成员,该类内部和继承类中可以访问。
public: 公共成员,完全公开,没有访问限制。
internal:在同一命名空间内可以访问
作者: 丁艳姣    时间: 2012-10-23 14:11
我看大家最后一个internal都是同一命名空间,其实说是同一程序集更好理解




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2