Construtores em Classes Abstratas

9 respostas
Alergictoeng

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

romarcio

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

Alergictoeng

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:

diogozero

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.

Alergictoeng

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

diogozero

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.

Alergictoeng

Agora sim um Valeuzão final! :smiley:

Valeu pelas informações aos dois!

Clercio_Guiliche

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.

Andersonrms

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