放大啦资源网 http://www.fangdala.com
当前位置首页 > 百科资料> 正文

protected

2023-02-11 18:41:43 暂无评论 百科资料

protected关键字(C++和C#)具有protected访问控制级别的成员是半公开的,外界无法直接访问这个控制级别的成员,但是派生类的base指针(在c++中也可用引用访问)可以获得访问能力。protected与private来自基本相似,只有360百科在继承时有较大的乎输脱区别。继承的类可以访问p地算rotected成员,但是不能访问private成员。

  • 中文名 受保护的
  • 外文名 Protected
  • 具    有 protected访问控制级别
  • 示    例 package a;
  • 获    得 访问能力

简介

  protecte来自d关键字(C++和C#底合判苦)

protected

  具有protected层超且饭语顶李访问控制级别的成员是半公开的,外界无法直接访问这个控制级别于困杂校庆督派庆为治的成员,但是子类的base指针(在c++中也可用引用访问)可以获得访问能力。protected与private基本相似,只有在继承时有较大的区别。360百科继承的类可以访问protected成员,但是不能访问private成员。

  以下是MSDN提供的C# 中protected关键字的参考钟步红着片资料。

  prote之找载南波民容样识cted 关键字是一个成员访问修饰符。受保护成员在的客老它加视以它的类中可访问并且可由派生类访问。有关 protected 与其他访问修饰符的比较,请参见可访问性级别。

  仅当访问通过派生类类型发生时,基类的受保护成员在派生类中才是可访问的。例如,请看以下代码段:

  // 松事我煤减蛋断protected_keyword求状溶.csusing System;

  class A

  {protected int x = 123;}

  class B : A

  {static void Main()

  {A a = new A();

  B b = new B();

  // Error CS1540, because x can only be accessed by

  // classes deri草吗外ved from A.

  // a.x = 10;

  // OK, because this class derives from A. b.x = 1的杂0;}

  语句 a.x =10 将生成错误,因为 A 不是从 B 派生的。

  结构成员无法受保护,因为无法继承结构。

  示例

  在此示例中,类 Deri的两vedPoint 从 Point 派生;因此,可以从该派生类直接访问基类的受保护成员。

  // protected_keyword_2.cs

  using Sys组每tem;

  class Point

  {protected int x; protec缩妈ted int y;}

  class Deriv斤此百径治减京边数初威edPoint: Point

  {static void Main()

  {De黄古选自京满rivedPoint dp = new DerivedPoint();

  // Dire律备世袁众思题ct access to protected members:

  dp.x = 10; dp.y = 15;

  Console.WriteLine("x = {0}, y = {1}", dp.x, dp.y);}

  输出x = 10, y = 15

Java

  protected 表明被它修饰的成员变量为保护类型,逐显在同一个包里和 public 类型只音种但把副定是一样的,也是能够访问到的。但是如果在不同包里的 protected 类型的成员变量就只能通过子类来访问,这个修饰符是区别于其他的修饰符的。

  示例

  package a;

  class door 

  protected String color ;

  protected void openDoor()

  {System.out.println("protected 类型的成员变量,只能在不同包外的子类访问到!");}

  public class wood_Door extends door {

  public static void main(String[] args)

  {wood_Door wd = new wood_Door ();

  wd.openDoor();}

  代码解析:

  door 的成员变量方法 openDoor 修饰为 protected 类型,只能通过在不同包下的子类来访问。如果 wood_Door 在同一个包下,那么和 public 类型是一样的了。如果其他类要访问 door 的方法,方法 openDoor 是访问不到的,因为对其他类而言相当于 private 类型的。

  区分

  在java中有public、protected、private、package-private(无修饰符)四种访问级别

  在子类中的方法如果重载了父类的方法,那么该方法的可见级别应更高或者相同,如父类中的方法是protected,那么子类中方法可以是public,但不能是private。在java中,一般来说,变量成员最好是private,对它们的访问可以通过public的方法,在这些方法中可以做些控制以保证数据的一致性。这些方法名一般以get和set做为前缀。

属性

  protected 是 ActionScript 3.0 中的新增属性 (attribute),可使属性 (property) 对所属类或子类中的调用来自方可见。换句话说,protected 属性在所属类中可用,或者对继承层次结构中该类下面的类可用。无论子类在同一包中还是在不同包中,这一点都适用。

  如果熟悉 ActionScript 2.0,就会了解此功能类似于 ActionScript 2.0 中的 priva机饭茶改着七额换服te 属性。ActionScript 3.0 protected 属性也类似于 Java 中的 protected 属360百科性,不同之处在于,Java 中的该属性还允许对同一象方职真景讲月包中的调用方进行访问。如果存在子类需要的变量或方法,但要对继承链外部的代码收级让隐藏该变量或方法,此时 protected 属性会很有用。

猜你喜欢