Problema com Herança

11 respostas
Sued

Ola…cá estou novamente…

estou com 1 problema no codigo abaixo.

public static void main(String args[]) {

ContaCorrente conta = new ContaCorrente();

//ContaEspecial conta;

boolean sair = false;
//chama menu e captura as opcoes digitadas
    do {
        mostrarMenu();
        Keyboard kbd = Console.getInput();

        int tipoConta = 0; // 0 para conta salario e 1 para conta especial
        int opcao = kbd.readInt();
        switch (opcao) {
            case 1:
                System.out.println("Digite o tipo da conta a ser aberta: ");
                tipoConta = kbd.readInt();
                if (tipoConta == 0){
                    conta.abrirConta();}
                else{
                    conta = new ContaEspecial();
                    conta.abrirConta();
                   [b] conta.alterarLimite();[/b] 
                }
                
         [b] meu problema é quando tento executar o metodo "conta.alterarLimite" que existe apenas na ContaEspecial que extends da ContaCorrente, o mesmo não é localizado...[/b]

          o que pode ser ?

11 Respostas

rpfragoso

Se “conta” é do tipo ContaCorrente, ele não pode acessar os métodos da subclasse ContaEspecial.

peczenyj

Facil:

ContaEspecial outraconta = new ContaEspecial();

outraconta.abrirConta();

outraconta.alterarLimite();
Sued

eu não posso re-instanciar novamente conta, sou obrigado a utilizar outro nome ?

rpfragoso

O que importa é que para você utilizar o método “alterarLimite()” você tem que ter um objeto do tipo ContaEspecial.

Sued

sim, mas não posso re-instanciar um objeto novamente ? dentro de um if ?

rpfragoso

O que você poderia fazer é

if (tipoConta == 0)
   {  
     ContaContacorrente conta;  
     conta.abrirConta();}  
   else
   {  
     conta = new ContaEspecial();  
     conta.abrirConta();  
     conta.alterarLimite();  
   }

Ou seja, fazer a declaração de “conta” dentro do if.

Sued

o problema é que dentro do if “não sei pq” o obj não consegue ser isntanciado.

TangZero

Pessoal, vamos usar as tags e . Assim, facilita a vida de quem lê os posts.

rpfragoso

Seu código tem que ficar parecido com isso:

public static void main(String args[]) 
{
   boolean sair = false;

   //chama menu e captura as opcoes digitadas
   do 
   {
      mostrarMenu();
      Keyboard kbd = Console.getInput();

      int tipoConta = 0; // 0 para conta salario e 1 para conta especial
      int opcao = kbd.readInt();
      switch (opcao) {
      case 1:
      System.out.println("Digite o tipo da conta a ser aberta: ");
      tipoConta = kbd.readInt();
      if (tipoConta == 0)
      {
         ContaCorrente conta =  new ContaCorrente();
         conta.abrirConta();
       }
      else
      {
         ContaEspecial conta = new ContaEspecial();
         conta.abrirConta();
         conta.alterarLimite();
}

Testa aí.

Gustavo_Yu

as vezes vc esqueceu de algo simples tipo

subclasse extends superclasse…

confere

Sued

ja resolvi o problema…

ContaCorrente conta = new ContaCorrente();
ContaEspecial conta2 = new ContaEspecial();

depois

conta = conta2;

resolvido.

Criado 22 de maio de 2008
Ultima resposta 29 de mai. de 2008
Respostas 11
Participantes 5