Protected

王朝百科·作者佚名  2010-01-29  
宽屏版  字体: |||超大  

protected(C# 参考)protected关键字是一个成员访问修饰符。受保护成员在它的类中可访问并且可由派生类访问。有关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 derived from A. // a.x = 10; // OK, because this class derives from A. b.x = 10; }}

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

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

示例

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

// protected_keyword_2.cs

using System;

class Point

{

protected int x; protected int y;

}

class DerivedPoint: Point

{

static void Main()

{

DerivedPoint dp = new DerivedPoint();

// Direct access to protected members:

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

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

}

}

输出x = 10, y = 15

protected ( 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 类型的。

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有