黑马程序员技术交流社区
标题:
类的访问修饰符
[打印本页]
作者:
迷你卡卡
时间:
2013-10-23 19:16
标题:
类的访问修饰符
本帖最后由 迷你卡卡 于 2013-10-24 15:05 编辑
在C#中,定义类的时候,我一般都是定义为public,那么类的访问修饰符可以使用internal,protected,private这几种吗?
作者:
黑色海
时间:
2013-10-23 19:30
引用:这个得看你是什么类,外部类只能是public 和internal,内部类的话就随便了,其他的类型应该也是这样。。。。
条件限制没有亲自测试,源自百度!
作者:
ˋ初°见
时间:
2013-10-23 20:27
可以的
public:该类任何地方都可以访问到该类
internal:该类在该项目中可以被访问到,如果一个解决方案下只有一个项目,那么internal和public没怎么区别
protected:该类只能被他的子类访问
private:该类不能被任何类访问包括他的子类
作者:
念念念念_、
时间:
2013-10-23 20:43
分别是:
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
作者:
茹化肖
时间:
2013-10-23 20:50
C#中类及类型成员修饰符有以下四类:public,private,protected,internal。
public 类及类型成员的修饰符
private 类型成员的修饰符
protected 类型成员的修饰符
internal 类及类型成员的修饰符
由以上四类说明,我们知道,可以放在class前面修饰类的修饰符关键字只有public和internal,如果没写任何关键字,默认是internal.
1.public class:任何地方该类都可以被访问到。
2.internal class:只有在同一程序集内,该类才可以被访问到。
而类型成员的修饰符可以是由这四个关键字形成的五种组合,他们分别是:public,protected,private,internal,protected internal.类型成员前如果没写任何关键字,默认为private。他们具体的访问权限,我们看下图就明白了。
需要注明的是:
protected的权限和private的权限很相似,唯一不同的是protected类型成员可以被子类继承,而private类型成员不可以被继承。
protected internal类型成员可以被理解成protected or internal 类型成员。不存在protected and internal类型成员。
作者:
ィSlick
时间:
2013-10-23 21:17
public
同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员。
private
只有同一类或结构中的代码可以访问该类型或成员。
protected
只有同一类或结构或者此类的派生类中的代码才可以访问的类型或成员。
internal
同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以。
protected internal
由其声明的程序集或另一个程序集派生的类中任何代码都可访问的类型或成员。 从另一个程序集进行访问必须在类声明中发生,该类声明派生自其中声明受保护的内部元素的类,并且必须通过派生的类类型的实例发生。
作者:
杨靖
时间:
2013-10-23 21:25
可以哦。
public:访问不受限制。
protected:访问仅限于包含类或从包含类派生的类型。
internal:访问仅限于当前程序集。
protected internal:访问仅限于当前程序集或从包含类派生的类型。
private:访问仅限于包含类型。
作者:
马晓平
时间:
2013-10-23 23:37
只有需要公开的变量才需要定义为属性,所以属性一般为public或protected。如果不需要公开,也就不需要定义为属性了,使用类中的私有变量就可以了(私有变量修饰符为private)
作者:
喜之郎果冻
时间:
2013-10-24 00:01
public 就是公共的,没有访问限制
internal 是只能在当前项目中使用(可以这么理解)。如果你定义类的时候没有加任何的访问修饰符,那么系统默认的就是internal
作者:
V_John
时间:
2013-10-24 13:10
1:public // 由此修饰的成员,可以再任何地方呗调用 (公共的)
2:private // 由此修饰的成员,只可以在本类中调用
3:internal //由此修饰的成员只能在本项目中呗访问到,现阶段我接触的是单项目,起作用等于public (内部的)
4:protected //由此修饰的成员只能在本类中和子类中呗访问到
他还有等级顺序。从大到小是。。。
等级排序:
public
internal && protected//这两个没有等级区分;
private
作者:
我们好好的
时间:
2013-10-24 14:27
private 私有的 //只能在当前类内部访问
protected 受保护的 //只能在类内部以及所有子类内部访问
internal 只能在当前程序集内部访问
protected internal 在类内部以及所有子类内部可以访问,也可在当前程序集内访问
public 公共的 //在任何地方都可以访问
作者:
迷你卡卡
时间:
2013-10-24 15:04
多谢各位的耐心解答
作者:
追溯客
时间:
2013-10-25 12:07
同学给你加分了!好好学习!蔡蔡和叶叶在黑马等着你!黑马有你更精彩!快点为了当土豪努力吧!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2