1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

C# Interfaces e Properties

Discussão em 'Programação' iniciada por stradale, 10 de Março de 2008. (Respostas: 4; Visualizações: 1746)

  1. stradale

    stradale [email protected] Member

    Isto é o que tenho:
    Código:
    public class Pessoa
    {
        private string nome;
    
        public Pessoa
        {
        }
    
        public string Nome
        {
            get
            {
                return nome;
            }
            set
            {
                nome = value;
            }
        }
    }
    Código:
    class Aluno : Pessoa, Coiso
    {
    
        public Aluno()
        {
    
        }
    
        public void FazCoisas()
        {
            // etc
        }
    }
    Isto que se segue (a bold) obviamente que está mal, agora... porquê?

    Como é que funcionam as interfaces com properties que vêm por herança duma classe acima?

    Código:
    public interface Coiso
    {
        void Fazcoisas();
    
    [B]     string Nome
        {
            get;
            set;
        }
    [/B] }
     
  2. NoMercy

    NoMercy Power Member

    Não há nada de mal com o teu interface (em termos técnicos), é à classe Aluno que lhe está a faltar a implementação da propriedade Nome do interface Coiso, se o queres implementar explicitamente

    Alem do mais, não sei se foi engano a escrever, mas o método na classe aluno deveria chamar-se tambem Fazcoisas e não FazCoisas se queres usar este método para implementar o interface Coiso

    De resto parece-me que vai compilar. Isto responde á tua pergunta?
     
    Última edição: 10 de Março de 2008
  3. alfinete

    alfinete Power Member

    na classe pões



    Código:
     
    
    namespace  teste
    {
        public class Dados
        {
    
             private string nome="";
    
             public string  pessoa ()
              {
              nome="xpro";
              return nome;
              }
    
            public string Nome
            {
                get { return nome; }
                set { nome = value; }
            }
       }
    
    }
    
    no form em que chamas a class para não estarea a fazer uses fazes
    (no caso de uma webpage) System.Web.UI.Page

    Código:
    
    namespace teste
    {
        public partial class Default : System.Web.UI.Page
        {
    
        Dados d= new Dados();
    
        d.pessoa();
        
        lblteste= d.Nome;
        }
    
    }
    
    ja deves ter reparado que se tiveres o mesmo namespace da classe no form tens acesso a classe sem fazeres um uses..

    atenção nome declarado tem letra minuscula

    e Nome da property começa com letra maiuscula , por uma qustão de destinção

    não podes por os dois iguais por isso assim ficam destintos para controlo melhor do code


    espero que ajude
     
    Última edição: 10 de Março de 2008
  4. stradale

    stradale [email protected] Member

    A classe Aluno não vai herdar as propriedades de Pessoa?

    Ontem estava assim:

    Código:
    Aluno joaoA = new Aluno()
    
    joaoA.Nome = "joao";
    
    joaoP Pessoa = (Pessoa) joaoA;
    Não era possível primeiro fazer cast para Pessoa e só depois alterar o nome.

    Hoje, por alguma razão já funciona, com o mesmo código (reescrito). Provavelmente ao reescrevê-lo lá corrigi um erro de que não me estava a aperceber.

    Foi engano sim. As classes nem são estas, foram apenas para servir de exemplo.


    De qualquer maneira, obrigado NoMercy e obrigado alfinete pela atenção! Kudos para os dois :)
     
  5. NoMercy

    NoMercy Power Member

    Sim, herda, mas como a classe Aluno implementa o interface Coiso e o interface Coiso tem uma definição de Nome, tu poderias querer implementar explicitamente uma definição da propriedade Nome na classe Aluno (diferente da implementação na classe Pessoa).
     

Partilhar esta Página