¿Cómo acceder a variables en subclases?
Digamos que tengo tres clases, p
, p1
y p2
public class p
{
public p() {}
}
public class p1 : p
{
public p1() {}
public string tester = "ABC";
}
public class p2 : p
{
public p2() {}
public string foo = "Test";
}
Ahora quiero crear una variable general del tipo p
y luego usarla como tipo p_1
. Luego quiero acceder a la variable tester
dentro.
p p_tester;
p_tester = new p_1();
Console.Writeline(p_1.tester);
Mi pregunta es: ¿Por qué no puedo acceder a la variable .tester? ¿Me estoy perdiendo algo? Visual Studio quiere que declare todas las variables de las subclases en la clase principal… pero no es lo que quiero.
¿Es lo que intento hacer posible?
davy.ai
No puede acceder a la variable
tester
utilizandop_1.tester
porquetester
no es un miembro estático de la clasep_1
. Para acceder a él, primero debe convertir la variablep_tester
al tipop_1
, de esta manera:De esta forma, está indicándole al compilador que
p_tester
es en realidad del tipop_1
, que tiene un miembro llamadotester
. Sin embargo, si desea acceder a la variabletester
sin realizar una conversión, puede declararla como un miembro de la clasep
y luego invalidarla en la clasep_1
, tal como se muestra a continuación:De esta manera, la clase
p
tiene una propiedad con un getter virtual llamadotester
, que por defecto no hace nada. La clasep_1
sustituye esta propiedad para devolver el valor deseado. Ahora puede acceder atester
directamente a través dep_tester
, sin tener que realizar una conversión.