El constructor de la clase secundaria "cesar" da un error. Dice que el nombre, el tipo es inaccesible debido a su nivel de protección. ¿Cómo? Como esta es una clase hija derivada de la clase "Cipher", no debería dar un error como este. ¿Cómo puedo superar esta situación? Pero quiero que esas variables sean privadas. No quiero cambiarlos como públicos.C# "es inaccesible debido a su nivel de protección" error en el constructor
*** El segundo ejemplo de código funciona. ¿Alguien puede ver la diferencia?
namespace Encrypter
{
class Cipher
{
public Cipher(string name, string type)
{
setName(name);
setType(type);
}
private string name;
private string type;
public void setName(string newName)
{
name = newName;
}
public string getName()
{
return name;
}
public void setType(string newType)
{
type = newType;
}
public string getType()
{
return type;
}
public string encrypt(string text)
{
return text;
}
public string decrypt(string text)
{
return text;
}
}
}
namespace Encrypter
{
class Caesar : Cipher
{
private int shiftamount;
private string shiftdirection;
public Caesar(int shiftamount, string shiftdirection) : base(name, type)
{
setShiftamount(shiftamount);
setShiftdirection(shiftdirection);
}
public void setShiftamount(int newShiftamount)
{
shiftamount = newShiftamount;
}
public int getShiftamount()
{
return shiftamount;
}
public void setShiftdirection(string newShiftdirection)
{
shiftdirection = newShiftdirection;
}
public string getShiftdirection()
{
return shiftdirection;
}
}
}
----------------------------- Nueva edición ------------ ----
class MyFile
{
public MyFile(int id, string name, int size, string type)
{
setId(id);
setName(name);
setSize(size);
setType(type);
}
private int id;
private string name;
private string type;
private int size;
class Movie : MyFile
{
private string director;
private int release_year;
public Movie(string director, int release_year, int id, string name, int size) : base(id, name, size, "m")
{
setDirector(director);
setRelease_year(release_year);
}
Gah! Está utilizando C# ... use Propiedades en lugar de métodos getter/setter. –
Las [directrices de nombres] (http://msdn.microsoft.com/en-us/library/xzf533w0%28v=vs.71%29.aspx) también podría ser una buena lectura para el afiche. El código se ve muy similar a Java. ;-) – mpontillo
Sí, en realidad mi idioma preferido es Java, así que estoy muy acostumbrado. Como C# es similar a Java, utilizo mis hábitos de programación de Java también en C#: D, pero sí, estás en lo cierto :) – Alptugay