Pregunta

¿Cuáles son los beneficios para la definición de métodos como protected en C #?

como:

protected void KeyDemo_KeyPress( object sender, KeyPressEventArgs e ) 
{
    // some code
}

En comparación con algo como esto:

private void FormName_Click( object sender, EventArgs e )
{
    //some code
}

He visto ejemplos de este tipo en muchos libros y yo no entiendo por qué y cuándo se usan private vs protected?

¿Fue útil?

Solución

métodos protegidas pueden ser llamados desde las clases derivadas. Los métodos privados no pueden.

Esa es la única diferencia entre los métodos privados y protegidos.

Otros consejos

A menudo 'protegido' se utiliza cuando se desea tener una clase hija sustituir un método de otro modo 'privado'.

public class Base {
    public void Api() {
       InternalUtilityMethod();
    }
    protected virtual void InternalUtilityMethod() {
       Console.WriteLine("do Base work");
    }
}

public class Derived : Base {
    protected override void InternalUtilityMethod() {
       Console.WriteLine("do Derived work");
    } 
}

Así que tenemos el comportamiento de anulación que conocemos y amamos de la herencia, sin exponer innecesariamente el InternalUtilityMethod a nadie fuera de nuestras clases.

var b = new Base();
b.Api();  // returns "do Base work"
var d = new Derived();
d.Api(); // returns "do Derived work"
  1. métodos protegidas pueden tener acceso a las clases que heredan donde como métodos privados no pueden.
  2. Teniendo en cuenta que .aspx y el archivo .ascx heredan de su código detrás de clases (default.aspx.cs), los métodos protegidos se puede acceder desde dentro de la .aspx / Ascx

Tenga esto en cuenta también: Si usted tiene un botón y de ese botón OnClick se establece en Button_Click

<asp:Button id="btn" runat="server" OnClick="Button_Click" />

A continuación, el método Button_Click necesita tener visibilidad al menos protegidos para ser accesible por el botón.

Se puede evitar esto mediante el añadido siguiente para que Load método:

btn.Click += new EventHandler(Button_Click);

Algunos aspectos de .NET como ASP.NET crean subclases de la clase de código subyacente en tiempo de ejecución. Así que una clase de página ASP.NET, por ejemplo, hereda de su clase de código subyacente. Al hacer que el método protegido, la clase de página generados dinámicamente puede conectar fácilmente un evento de clic de botón a un método protegido en la clase base que se encarga de ello.

Si usted tiene una forma hereditaria (o cualquier clase para el caso), que sería capaz de invocar esta función desde dentro de la sub-clase.

métodos protegidos son al igual que los métodos privados. Podrían ser accedidos por los miembros de la clase. La única diferencia es a diferencia de los miembros privados, miembros protegidos se podía acceder por las clases derivadas también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top