protected的访问范围
1. protected与public的区别
public protected private2009-08-06 16:03一,作为数据成员修饰符:
public, private, protected这三个关键词,对类成员访问和在基类继承时进行的访问模式限定符。
在成员访问模式中:
public 表示共有;类的数据成员和函数可以被该类对象和派生类访问。
private 私有型;自己的类可以访问,但派生类不能访问。
protected 保护型;自身类和派生类可以访问相当于自身的private型成员,它同private的区别就是在对待派生类的区别上,
C++中 public,protected, private 访问标号小结
第一:private, public, protected 访问标号的访问范围。
private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问。
protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。但不能被该类的对象访问。
public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问。
注:友元函数包括3种:设为友元的普通的非成员函数;设为友元的其他类的成员函数;设为友元类中的所有成员函数。
第二:类的继承后方法属性变化。
private 属性不能够被继承。
使用private继承,父类的protected和public属性在子类中变为private;
使用protected继承,父类的protected和public属性在子类中变为protected;
使用public继承,父类中的protected和public属性不发生改变;如下所示:
public: protected: private:
public继承 public protected 不可用
protected继承 protected protected 不可用
private继承 private private 不可用
protected继承和private继承能降低访问权限。
C++中public,protected,private访问小结
第一:private,public,protected方法的访问范围.
private: 只能由该类中的方法访问,不能被该类的对象访问.
protected: 可以被该类中的方法和其友元函数访问,但不能被该类的对象访问
public: 可以被该类中的方法和其友元函数访问,也可以由该类的对象访问
第二:类的继承后方法属性变化:
使用private继承,父类的所有方法在子类中变为private;
使用protected继承,父类的protected和public方法在子类中变为protected,private方法不变;
使用public继承,父类中的方法属性不发生改变;
二,作为继承子类的修饰符
对于一个父类(基类),如果声明一个成员为private,就说明这个东东使我的,不能让其他人用,包括子孙。如果是protected,我就会告诉我的子孙,你们要小心的用,但绝对不能让外人使用。如果说是public,那就是说,这个东东大家随便用吧。对于一个子类(从基类继承而来的),private是一个吝啬的继承者,他将从祖辈继承下来的东西统统藏起来,不让别人碰触(包括自己的子孙)。(当然他也只能使用祖辈授予其的权力,即只能使用祖辈中的protected和public)。protected是一个有保护意识的继承者,他将从祖辈继承下来的东西,只允许自己的子孙使用(即使以前祖辈的东西是公众都可以使用的public)。public是一个循规守据,他不关心祖辈的东西,原来是什么规矩就是什么
在继承时采公开(public)继承的方式来继承一个类别时,父类别与子类别为"is-a"的关系,子类别继承父类别的公开(public)接口及受保护(protected)的成员,子类别是父类别的细化型态。
保护(protected)继承可以改变继承下来的基底类别成员权限,保护的意思就是让这些成员继承下来之后,保护它们仅能在类别与衍生类别中使用,保护继承的语法如下所示:
class B : protected A {
// 实作
};
保护继承时使用protected来继承基底类别,继承下来的成员在衍生类别中的权限变为如下:
基底类别 衍生类别
private 不继承
protected protected
public protected
简单的说,原来的权限在protected以下的保留其原来权限,而在protected以上的就降为protected,子类别protected继承的目的在只希望保留父类别中已实作的公开成员与受保护的成员为己用或接下来的衍生类别使用,并提供自己的公开接口。
您也可以在继承基底类别之后,将它所有的成员一律改为私用(private),使用私用(private)继承可以达到这个目的,其语法如下:
class B : private A {
// 实作
};
基底类别中的成员在被继承之后,其权限如下所示:
基底类别 衍生类别
private 不继承
protected private
public private
private继承被称为“实作继承”,意味着子类别只想保留父类别中已实作的公开与受保护的成员为己用,并提供自己的公开接口与接下来会被继承的受保护的成员。
2. 访问权限为protected的类成员可被访问的范围是什么
protected是访问控制的一种 。在类中被protected修饰的函数或数据成员,只能被该类或其子类的以及其友元函数访问。
特别要注意的是:访问权限为protected的类成员不能被该类的实例对象或其子类的实例对象访问。以下的C#代码演示了这一点
//父类
publicclassFather
{
protectedintx;
publicFather()
{
//正确!
x=10;
}
publicvoidShowX()
{
//正确!
Console.Write("x={0}",x);
}
}
//子类
publicclassSon:Father
{
publicSon():base()
{
//正确!
x=100;
}
publicvoidShowXSon()
{
//正确!
Console.Write("x={0}",x);
}
}
classProgram
{
staticvoidMain(string[]args)
{
Fatherf=newFather();
//f.x=30;<--错误!!!
f.ShowX();
Sons=newSon();
//s.x=20;<--错误!!!
s.ShowXSon();
}
}
3. public ,protected, private这三种权限限定关键字的限定的内容访问范围是什么
private关键字:只在本类中可以使用
默认:在本类和本包中可以使用
protected关键字:在本类、本包和不同包的子类中可以使用
public关键字:在所有的类和包中可以使用
即:
Private强调给自己使用
默认强调给同包下的使用
protected强调给子类使用
public给所有用
4. private、protected、pubic、internal修饰符的访问权限分别是
private : 私有成员, 在类的内部才可以访问(只能从其声明上下文中进行访问)
protected : 保护成员,该类内部和从该类派生的类中可以访问
Friend:友元 ,声明 friend 元素的程序集中的代码可以访问该元素,而不能从程序集外部访问
Protected Friend:在派生类或同一程序集内都可以访问
public : 公共成员,完全公开,没有访问限制
internal: 在同一命名空间内可以访问
5. 简述Private和Protected权限
从如下三方面简述Private和Protected权限:
一、使用方面:
1、private:在模块级别使用编程语句声明私有变量并分配存储空间。
2、protected:在模块级别使用编程语句声明受保护的变量并分配存储空间。
二、规则方面:
1、private:在赋值之前,声明的对象变量具有特定的Nothing值,这表明该变量未指向任何对象实例。如果未指定数据类型或对象类型,并且未在模块中使用Deftype语句,则默认情况下变量为Variant。
2、protected:继承的类可以访问protected成员,但不能访问private成员。
三、功能方面:
1、private:只能在包含其声明的模块中使用。可以使用Private语句声明变量的数据类型,也可以使用Private语句声明变量的对象类型。
2、protected:具有protected访问控制级别的成员是半公开的,外界无法直接访问此控制级别的成员,但是派生类的base指针(也可以通过C ++进行访问)可以访问。
6. Private 的访问限制
第一:private, public, protected 访问标号的访问范围。
private :只能由1.该类中的函数、2.其友元函数访问。
不能被任何其他访问,该类的对象也不能访问。
protected :可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。
但不能被该类的对象访问。
public :可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问。
注:友元函数包括3种:设为友元的普通的非成员函数;设为友元的其他类的成员函数;设为友元类中的所有成员函数。
第二:类的继承后方法属性变化。
private 属性不能够被继承。
使用private继承,父类的protected和public属性在子类中变为private;
使用protected继承,父类的protected和public属性在子类中变为protected;
使用public继承,父类中的protected和public属性不发生改变;
7. 简述 private、 protected、 public、 internal 修饰符的访问权限。
public:类或成员可以由同一程序集中的任何其他代码或引用它的另一个程序集访问。
private:只能通过同一个类或结构中的代码访问类型或成员。
protected:类或成员只能由同一个类中的代码访问,或者在从该类派生的类中访问。
internal:类或成员可以由同一程序集中的任何代码访问,但不能从另一个程序集访问。
(7)protected的访问范围扩展阅读:
private、 protected、 public、 internal 修饰符除了可以单独使用,还可以组合使用。
protected internal:访问仅限于从包含类派生的当前程序集或类型。
private protected: 访问仅限于从当前程序集中的包含类派生的包含类或类型。
除了使用protected internal或private protected组合时,成员或类只允许使用一个访问修
饰符。名称空间上不允许访问修饰符。命名空间没有访问限制。
根据成员声明发生的上下文,仅允许某些声明的可访问性。如果在成员声明中未指定访问修饰
符,则使用默认辅助功能。
顶级类型(不嵌套在其他类型中)只能具有internal或public可访问性。这些类型的默认可访
问性是internal。
8. protected是什么意思
是java中的访问修饰符,他的修饰范围是:只能在同一个包下调用proteted修饰的方法,其他包中无法调用。
java中还有其他访问修饰符,比如:public,private,default(default修饰符通常默认不写),private修饰符修饰范围最小,public 修饰范围最大,public可以修饰的方法,在不同包下也可以调用。
希望这些对你有用!
9. 用Protected修饰的成员变量和方法具有什么样的访问权限制
访问修饰符及范围: private(私人,类内) < protected(家内,类及子类内) < internal (族内,同一个dll文件内)< public(公家,无限制)
10. 说明java中public、protected、default、private四个访问控制修饰的作用
关于访问控制,private,default,protected,public,不加任何访问权限限定的成员采用的默认访问权限,也就是default或者package,可以被这个类本身和同一个包中的类所访问;private对访问权限的限制最大,修饰那些不想让外界访问的数据和方法,表示私有的,这有利于数据的安全和数据的一致性,同样如果以个类的构造方法被申明为private其他不能生成该类的实例对象;protected申明的成员可以被这个类本身和他的子类以及同一个包中所有其他类访问;带有public的成员可以被所有的类访问。