Interface, classe e Herança, erro!? Help?

E ai pessoal… nao sei o q estou fazendo de errado =/

tenho uma interface, uma classe a que implementa.

esta implementa todos os métodos tal… direitinho…

Interaface: ICont
Classe: Cont
Classe que herda Cont: ContB

    
    public class Cont implements ICont{

    protected IPessoa titular;
    protected Telefone[] telefone;
    
    public Cont(IPessoa titular, Telefone[] telefone){
        this.titular = titular;
        this.telefone = telefone;
    }

    //.. outros métodos
   }

   class ContB extends Cont{}

erro: Cont(IPessoa, Telefone[]) cannot be applied to ()

O que está acontecendo?? eu não preciso implementar os métodos da interface de novo na classe ContB né?

Como vc implementou um construtor com dois argumentos, o compilaodr não vai fornecer o construtor padrão para a superclasse (sem argumentos).

Quando vc tenta extender essa classe, sem implementar um construtor de 2 argumentos, da erro, pois como o compilador tenta fornecer o construtor default para a subclasse e não acha na superclasse (pois ele utiliza o da superclasse no da subclasse) ai dá erro mesmo.

Falow!

duas coisas que nao to vendo sao os metodos de sua interface e sua classe IPessoa, sempre é interesante quando postar um codigo por todas as classes ou interfaces que engloba o codigo… e uma regra… implementar os metodos de uma interface deve declarar eles como public… senao nao compila parceiro…

então… eu tentei implementar um construtor com dois parametros igual ao da classe pai… mas nao deu certo =/

Não faz diferença colocar o resto do código aqui, só vai ficar xato de ler… o problema é só no construtor =)


public class ContB extends Cont{
    
    public ContaEspecial(IPessoa titular, Telefone[] telefone){
        this.titular = titular;
        this.telefone = telefone;
    }
}

e continua com o mesmo problema =(

Basta você implementar um construtor em Cont desta forma, além do que o que você já possui:

public Cont(){}

Nas classes que herdam a classe Cont, quando você for fazer o construtor delas, você precisa chamar o construtor da classe pai, através dessa sintaxe: super(), ou, como você implementou um construtor que recebe parâmetros, você pode chamar super(titular, telefone).

Espero ter ajudado.

Abraços,

Só reiterando o que eu disse, não tinha visto sua última mensagem. Teria que ficar assim:

 public class ContB extends Cont{
     
     public ContaEspecial(IPessoa titular, Telefone[] telefone){
         super(titular, telefone);
     }
 }

teria q ficar assim:


public class ContB extends Cont{
      
      public ContB(IPessoa titular, Telefone[] telefone){
          super(titular, telefone);
      }
  }

nao esqueça nome do construtor igual o da classe!

Foi mal, não atentei a isso, é verdade! É sempre o ctrl+c e o ctrl+v pra criar caso. =P