C# Language Reference
protected (C# Reference)

The protected keyword is a member access modifier. A protected member is accessible within its class and by derived classes. For a comparison of protected with the other access modifiers, see Accessibility Levels.

A protected member of a base class is accessible in a derived class only if the access takes place through the derived class type. For example, consider the following code segment:

// protected_keyword.cs
using 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;   
    }
}

The statement a.x =10 generates an error because A is not derived from B.

Struct members cannot be protected because the struct cannot be inherited.

Example

In this example, the class DerivedPoint is derived from Point; therefore, you can access the protected members of the base class directly from the derived class.

// protected_keyword_2.cs
using System;
class Point 
{
    protected int x; 
    protected int y;
}

class DerivedPoint: Point 
{
    static void Main() 
    {
        DerivedPoint dpoint = new DerivedPoint();

        // Direct access to protected members:
        dpoint.x = 10;
        dpoint.y = 15;
        Console.WriteLine("x = {0}, y = {1}", dpoint.x, dpoint.y); 
    }
}

Output

x = 10, y = 15
Comments

If you change the access levels of x and y to private, the compiler will issue the error messages:

'Point.y' is inaccessible due to its protection level.

'Point.x' is inaccessible due to its protection level.

C# Language Specification

For more information, see the following sections in the C# Language Specification:

  • 3.5.1 Declared Accessibility

  • 3.5.3 Protected access for instance members

  • 3.5.4 Accessibility constraints

  • 10.2.3 Access Modifiers

See Also

Reference

C# Keywords
Access Modifiers (C# Reference)
Accessibility Levels (C# Reference)
Modifiers (C# Reference)
public (C# Reference)
private (C# Reference)
internal (C# Reference)

Concepts

C# Programming Guide

Other Resources

C# Reference

Tags :


Community Content

John Winstanley
Any one know why access modifers are so different in Java and C#?

Any one know why access modifers are so different in Java and C#?
http://en.csharp-online.net/CSharp_FAQ:_What_are_the_differences_between_CSharp_and_Java_access_modifiers

Tags :

Page view tracker