Forum Pplware
Questão de C#. - Versão de Impressão

+- Forum Pplware (http://forum.pplware.com)
+-- Fórum: Mais Tech (/forumdisplay.php?fid=11)
+--- Fórum: Programação e Web (/forumdisplay.php?fid=16)
+--- Tópico: Questão de C#. (/showthread.php?tid=7981)



Questão de C#. - aucrun - 10-12-2010 13:34

Bom dia ...

Tenho uma pequena dúvida que queria ver se me conseguiam ajudar nela.
Imaginem que tenho uma Classe normal Empregado da seguinte forma:

class Empregado
{
string Nome = "";
int Idade = 0;
int Codigo = -1;
string Morada = "";
string NomeEsposa = "";
int NIB = 0;
private static string Director;
}

Imaginem ainda que tenho uma Classe Patrão que herda dessa classe Empregado.

Até aqui tudo bem ... agora imaginem que quero que a Classe Patrão de alguma forma no seu tratamento me indique que é o Director do Patrão em questão.
A única forma que arranjei para esta situação foi a de usar uma função na Classe Empregado que devolvesse o nome do Director, tipo:
public static string DevolveNomeDirector()
{
return Director;
}
E na Classe Patrão usaria o Empregado.DevolveNomeDirector()

De qualquer forma parece-me alguma coisa incorrecta, uma vez que a Classe Patrão deriva da Classe Empregado deveria ter acesso imediato à variável Estática Director, certo (mesmo por ser estática)?
Ou o meu raciocínio está incorrecto?

Obrigado!


RE: Questão de C#. - Bruno Bernardino - 10-12-2010 13:42

Não tenho a certeza, mas penso que pelo facto de ser private, talvez não consigas aceder por classes derivadas.


RE: Questão de C#. - aucrun - 10-12-2010 14:38

(10-12-2010 13:42)Bruno Bernardino Escreveu:  Não tenho a certeza, mas penso que pelo facto de ser private, talvez não consigas aceder por classes derivadas.

Era isso mesmo ... como não gosto de usar propriedades públicas terei de usar o GET/SET .... era isso mesmo ...

Obrigado Bruno! Obrigado


RE: Questão de C#. - Shogun - 27-12-2010 23:03

Passar a variavel para public é uma solução mas não é a mais elegante, até porque não percebo o porquê dessa variavel ser estatica. A razão de não poderes aceder é porque sendo uma variável estática não consegues aceder a ela no contexto de uma instância da classe. Ou seja, para acederes a ela terás que escrever algo como Empregado.Director.

Cumprimentos,
Shogun


RE: Questão de C#. - kurayama - 29-12-2010 19:06

Não sei como funciona em c#, mas pelo menos em c++ uma classe derivada só pode aceder directamente às variáveis da base se estas forem protected ou public.
Talvez se trocasses esse private por protected já funcionasse.