Opa, então você precisa que os membros da classe PessoaBase estejam disponíveis na PessoaCarac.
Para isto, usamos a herança! No C#, a sintaxe de herança é:
class ClasseDerivada : ClasseBase
{
}
No curso, usamos o exemplo dos funcionários do banco ByteBank, então criamos a classe base Funcionario:
public class Funcionario
{
public string nome;
public double salario;
}
A partir disto, podemos criar um Analista e, para não repetir a definição do nome e salario, herdamos de Funcionario:
public class Analista : Funcionario
{
public string especialidade;
}
(nesse exemplo adicionei o campo especialidade em Analista)
Para usar o código, ficamos com :
Analista mariana = new Analista();
mariana.nome = "Mariana";
mariana.especialidade = "Computação de alta performance";
Mas, todo objeto do tipo Analista é também Funcionario, afinal, fizemos a herança. Então podemos escrever o código abaixo:
Funcionario mariana = new Analista();
mariana.nome = "Mariana";
Perceba, contudo, que agora que a variável mariana é do tipo Funcionario e não mais do tipo Analista. O tipo Funcionario não define um membro chamado especialidade, então o código abaixo não compila:
Funcionario mariana = new Analista();
mariana.nome = "Mariana";
mariana.especialidade = "Computação de alta performance"; // erro aqui
No seu caso de PessoaBase e PessoaCarac, teremos:
public class PessoaBase
{
public string nome;
}
public class PessoaCarac : PessoaBase
{
}
O que você acha? Ajudei com a dúvida?
Abs.