Java和C#的访问修饰符
C#的访问修饰符:
Public:可被所属类和成员以及不属于类的成员访问.
所修饰类的成员
可在任何情况下通过类的对象和类成员被使用.
所修饰的类类型
可在任何情况下被类的访问级别的类继承.
Internal:可被当前程序集访问
所修饰类的成员
在统一”解决方案”里的使用与Public相同(与命名空间无关).出了解决方案则不可被使用.
所修饰的类类型(其为类的默认修饰符)
在统一”解决方案”中,可被相同级别的类继承(也就是说被Internal修饰的类),不可被访问就别比自己高的类继承(Public修饰的类).
同时,在不同”解决方案”中,类类型不可被使用.
Protected:可被所属类或派生自所属类的类型访问.
所修饰类的成员
1. 可被类的内部对象(隐指针this) 和类成员使用,以及在类的内部所声明的类的对象使用.
2. 在其他类中声明的自身类的对象却不可访问自身的protected成员.
3. 在同一”命名空间”或不同”命名空间”下,派生自所属类的类就继承了父类的protected以及访问级别以上的类成员,所以他的使用与自身声明的成员无异,其规则参照上两条.
所修饰的类类型
其修饰符不能修饰类.
Private:仅所属类的成员才可以访问
所修饰类的成员(其为类成员的默认修饰符)
1. 可被类的内部对象和类成员使用,以及在类的内部所声明的类的对象使用.
2. 在其他类中声明的自身类的对象也不可访问自身的private成员.
3. 任何情况下,private成员不可被派生类继承.
所修饰的类类型
其修饰符不能修饰类.
Java的访问修饰符:
Public:
所修饰类的成员
可在任何情况下通过类的对象和类成员被使用.
所修饰的类类型
可在任何情况下被其他访问级别的类继承.
Protected:
所修饰类的成员
1可被类的内部对象(隐指针this) 和类成员使用,以及在类的内部所声明的类的对象使用.
2在同”包”内,在其他类中声明的自身类的对象可访问自身的protected成员.
3 在不同”包”内, 在其他类中声明的自身类的对象却不可访问自身的protected成员.
4在同一”包”或不同”包”下,派生自所属类的类就继承了父类的protected以及访问级别以上的类成员,但是在同”包”内,在其他类中声明的自身类的对象可访问自身和父类继承下的protected成员,在不同”包”内,在其他类中声明的自身类的对象只可访问父类继承下的protected成员,而自身的protected成员不可访问.
所修饰的类类型
其修饰符不能修饰类.
默认的:
所修饰类的成员
1可被类的内部对象(隐指针this) 和类成员使用,以及在类的内部所声明的类的对象使用.
2在同”包”内,在其他类中声明的自身类的对象可访问自身的默认级别的成员.
3 在不同”包”内, 在其他类中声明的自身类的对象却不可访问自身的默认级别的成员.
4. 任何情况下,默认级别的成员不可被派生类继承.
所修饰的类类型
1. 在同”包”内,可被其他访问级别的类继承.
2. 默认级别的类,不能在”包”外被声明和实例化,也不能被继承,即使引入了包(import).也就是说,它在包外不可见.
Private:
所修饰类的成员(其为类成员的默认修饰符)
1可被类的内部对象和类成员使用,以及在类的内部所声明的类的对象使用.
2任何情况下,在其他类中声明的自身类的对象也不可访问自身的private成员.
3任何情况下,private成员不可被派生类继承.
所修饰的类类型
其修饰符不能修饰类.