Zdar, jaký smysl má ochraňovat konstruktor rodičovské třídy (abstraktní) pomocí slova "protected". K samotnému kontruktoru se u potomku přistupuje přes "base". Jinak ke konstrukturu samotnému přistupovat nelze. Takže proč je v následujícím kódu protected? (Je to z knížky podle které se učím)
namespace Tokenizer
{
abstract class ZákladníToken
{
new public string ToString()
{
return this.název;
}
protected ZákladníToken(string název) //Proč je tu protected?
{
this.název = název;
}
private readonly string název;
}
}
A ještě ono jde rozhraní použít jako typ objektu?
namespace Tokenizer
{
interface ITokenInspektor
{
void ProhlédniKomentář (string token);
void ProhlédniIdentifikátor (string token);
void ProhlédniKlíčovéSlovo (string token);
void ProhlédniOperátor (string token);
void ProhlédniInterpunkci (string token);
void ProhlédniLiterál (string token);
void ProhlédniBílýZnak (string token);
}
}
a
class TokenBílýZnak : ZákladníToken, IPřístupnýToken
{
public TokenBílýZnak(string název)
: base(název)
{
}
void IPřístupný.Přijmi(ITokenInspektor inspektor) // jako typ objektu (inspektoru) je použité právě rozhraní
{
inspektor.ProhlédniBílýZnak(this.ToString());
}
}