Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Por que interface validador não apareceu na classe filha?

Levando em consideração que o objetivo da herança é fornecer aos filhos todos os códigos que o pai tem por quê a classe Fisica não encontrou o metodo Validador.validarDocumento()?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Atividade {

   public interface Validador {
        bool validarDocumento();
    }

    public abstract class Pessoa : Validador {
        public string nome;

        public void MetodoEscreverNome() {
            Console.WriteLine("Digite o nome:");
        }

        bool Validador.validarDocumento() { // fui obrigado a criar por causa da interface "Validador"
            Console.WriteLine("metodo funcionando");
            return false;
        }
        public abstract void MetodoPessoaAbstract(); 
    }

    public class Fisica : Pessoa {
        public string cpf;

        public void MetodoPessoa() {
            MetodoEscreverNome();

            Validador.validarDocumento(); // Por quê a classe Física não encontrou o "Validador.validarDocumento()"??
        }

        public override void MetodoPessoaAbstract() {
            Console.WriteLine("MetodoPessoaAbstract");
        }
    }

    public class Executa {
        public static void Main(String[] args) { }
    }
}
1 resposta
solução!

Olá Alan,

Tenta assim, e também da uma olhada neste link que fala sobre Interface Explicita.

https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/interfaces/explicit-interface-implementation

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Atividade
{

    public interface IValidador //interface a convenção é sempre usar I antes do nome da interface
    {
        bool ValidarDocumento();
    }

    public abstract class Pessoa : IValidador
    {
        public string nome;

        public void MetodoEscreverNome()
        {
            Console.WriteLine("Digite o nome:");
        }

        public bool ValidarDocumento() //removi a implementação da interface explicita
        { 
            Console.WriteLine("metodo funcionando");
            return false;
        }
        public abstract void MetodoPessoaAbstract();
    }

    public class Fisica : Pessoa
    {
        public string cpf;

        public void MetodoPessoa()
        {
            MetodoEscreverNome();

            ValidarDocumento(); // Agora ele visualiza.
        }

        public override void MetodoPessoaAbstract()
        {
            Console.WriteLine("MetodoPessoaAbstract");
        }
    }

    public class Executa
    {
        public static void Main(String[] args) { }
    }
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software