protected (référence C#)

Le mot clé protected est un modificateur d’accès de membre.

Notes

Cette page traite de l’accès protected. Le mot clé protected fait également partie des modificateurs d’accès protected internal et private protected.

Un membre protégé est accessible dans sa classe et par les instances de la classe dérivée.

Pour obtenir une comparaison de protected et des autres modificateurs d’accès, consultez Niveaux d’accessibilité.

Exemple 1

Un membre protégé d’une classe de base est accessible dans une classe dérivée uniquement si l’accès s’effectue par le biais du type de la classe dérivée. Prenons l’exemple de l’extrait de code suivant :

class A
{
    protected int x = 123;
}

class B : A
{
    static void Main()
    {
        var a = new A();
        var 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;
    }
}

L’instruction a.x = 10 génère une erreur, car elle est appelée dans la méthode statique Main, et pas dans une instance de la classe B.

Les membres de struct ne peuvent pas être protégés, car le struct ne peut pas être hérité.

Exemple 2

Dans cet exemple, la classe DerivedPoint est dérivée de Point. Vous pouvez donc accéder aux membres protégés de la classe de base directement à partir de la classe dérivée.

class Point
{
    protected int x;
    protected int y;
}

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

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

Si vous changez les niveaux d’accès de x et y à private, le compilateur affiche les messages d’erreur suivants :

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

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

spécification du langage C#

Pour plus d’informations, consultez Accessibilité déclarée dans la spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.

Voir aussi