Construtores em Classes Abstratas

9 respostas
A

Olá como não achei nem um tópico com esta dúvida em especial (Caso tenha por favor gostaria do link), Gostaria de Saber como funcionam os construtores em Classes Abstratas … Tem ou Não tem? Sei que se ela possuir uma inner Class essa terá pois e apenas uma classe interna.

Obrigado!

9 Respostas

R

Tem sim, toda classe Java tem pelo menos 1 construtor.

A

Valeuzão mesmo! :slight_smile:
Complementando a pergunta e fazendo outra …
Sendo assim posso instanciar minha classe abstrata?
Mais uma perguntinha capciosa … Interfaces não tem construto então?

Desculpa ai tantas duvidas mas como pode ver são as coisas que são implicitas … eu imagino a resposta de cada uma delas mas só quero a certeza de alguém com experiência …

Obrigado! :smiley:

D

Você não vai instanciar uma classe abstrata (nem pode)
O construtor dela vai ser herdado pelas classes concretas e essas sim você pode instanciar.

A

Aaaaaaa Beleza Valeuzão! =) Mas e as interfaces?

D

Não, interfaces não tem construtor.

Em uma visão bem geral, as interfaces definem como a classe que vão implementar elas são acessadas.

Assim, classes que implementem a mesma interface podem ser acessadas da “mesma maneira”, pois terão os mesmos métodos da interface.

A

Agora sim um Valeuzão final! :smiley:

Valeu pelas informações aos dois!

C

Tanto as classes abstractas como as interfaces não tem construtores.
Porque nenhuma das duas pude ser instanciada (não se pode criar objectos a partir delas).

M

Por exemplo, Temos a classe Animal, classe Cachorro, classe Galinha e uma classe AnimalTest
então, na classe Animal, declaramos abstract void fazerBarulho();
na classe Cachorro extendemos com extends Animal
e colcoamos na classe Cachorro void fazerBarulho() { System.out.println("Au, Au, Au"); }
e fazemos isso na classe Galinha tbm.
Imagina, se não usarmos a herança, termos que criar uns 100 animais, quantos if(), else if e tals temos que colocar
para criarmos, todos os cachorros por exemplo latem, então não precisamos declarar a mesma coisa para varios animal que fazem a mesma coisa.
É isso ae!
PS: Na classe AnimalTest colocamos antes do método main public static void barulho(Animal animal) { animal.fazerBarulho(); }
e depois só declaramos barulho(Nome do animal);

Se alguma coisa estiver errado, me corrijam, sou iniciante em java.

A

Classes abstratas tb tem construtor. Se vc não declarar um explicitamente, o compilador criará um padrão (sem argumentos).
As classes abstratas não podem ser instanciadas. Porém quando uma classe filha é instanciada, o construtor da classe pai é chamado.

Exemplo:

abstract class Animal {
    Animal ( ) {
        System.out.println("Animal");
    }
}
class Cachorro extends Animal {
    Cachorro ( ) {
        System.out.println("Cachorro");
    }
}

Ao instanciar a classe Cachorro, será impresso:

Animal
Cachorro

Ou seja, o construtor da classe Animal é executado.

Criado 5 de julho de 2012
Ultima resposta 14 de jul. de 2012
Respostas 9
Participantes 6