Construtores e Tipos de Arquivo

9 respostas
D

Bom dia :smiley:

Comecei meu curso de java e ontem na aula me deparei com uma coisa que não entendi muito bem o que e nem como funciona: contrutores e tipos de arquivo.

Já li de novo e nada, será que alguém pode dar uma definição de construtores e tipos de arquivos, o que é e para que serve?

Acheio meio complicadinho =/

Vlw

[]'s

9 Respostas

Deh

ao meu ver construtor é o método que é chamado quando você cria uma instância de tal classe… por exemplo:

public static SuperClass {
      SuperClass() {
                //códigos aqui...

       }
   
       public static void main(String args[]){
               SuperClass x = new SuperClass(); //opa! chamamos o 
                                                                 // construtor da class
       }
}

lembrando que para ser um construtor, ele não deve retornar nada!
o nome deve coincidir com o nome da classe,

por exemplo

public class Metodo {
            void Metodo(){ } //metodo qualquer!
            Metodo() {}  //construtor!
}

não sei se tirei a sua dúvida =/ e quanto a tipos de arquivo eu não entendi… como assim tipos de arquivos?
e me desculpem se eu errei em algo! e me corrijam se cometi algum…
abraços !

diego2005

Cara, os construtores são executados sempre que você cria um novo objeto, ou seja, sempre que você usa new. Eles servem pra inicializar a sua classe, por exemplo:

public class Construtor
{
    private String s1, s2;

    public Construtor()
   {
       this( "", "");
   }

    public Construtor(String s1, s2)
   {
       this.s1 = s1;
       this.s2 = s2;
   }

    public static void main(String[] args)
    {
         new Construtor(); // vai chamar o construtor sem parâmetro
         new Construtor("Java", "Teste"); // chama o construtor com parâmetro
    }
}

Qualquer coisa o pessoal explica melhor...

zepunk

Quando usamos a palavra chave new, estamos construindo um objeto. Sempre
quando o new é chamado, executa o construtor da classe. O construtor da classe é
um bloco declarado com o mesmo nome que a classe:

class Conta {
 	int numero;
 	String dono;
 	double saldo;
 	double limite;

 	// construtor
 	Conta() {
 		System.out.println(?Construindo uma conta.?);
	}

 // ..
 }

Então, quando fizermos:
Conta c = new Conta();
A mensagem ?construindo uma conta? aparecerá.

Quando você não declara nenhum construtor na sua classe, o Java cria um para você.
Esse construtor é o construtor default, ele não recebe nenhum argumento e o corpo
dele é vazio.
A partir do momento que você declara um construtor, o construtor default não é mais
fornecido.

Um construtor não é um método. Algumas pessoas o chamam de um método especial,
mas definitivamente não é,  que não possui retorno e  é chamado durante a
construção do objeto.

Um construtor só pode rodar durante a construção do objeto, isto é, você nunca
conseguirá chamar o construtor em um objeto já construído. Porém, durante a
construção de um objeto, você pode fazer com que um construtor chame outro, para
não ter de ficar copiando e colando:

class Conta {
	int numero;
	String dono;
	double saldo;
	double limite;

	// construtor
	Conta(String dono) {
		// faz mais uma série de inicializações e configurações
		this.dono = dono;
	}

	public Conta (int numero, String dono) {
		this(dono); // chama o construtor que foi declarado acima
		this.dono = dono;
	}
// ..
}

texto retirado da apostila da caelum.

peczenyj

Uma forma talvez não canonica de entender construtures é assim

o que significa a linha:

int i;

vc declara uma variavel (i) como sendo do tipo primitivo inteiro (int), certo?

qual o valor de i, quando vc for usar ? não está definido! Vc tem que dizer que seu i vale X antes de usa-lo, sob pena do seu programa não compilar.

agora… e se for algo assim

Object o;

vc também tem uma variavel, no caso ela não é primitiva, ela é um java.lang.Object. qual o ‘valor’ dela?

também não está definida. entretanto um objeto possui ‘valor’? um objeto possui atributos e métodos, logo não é algo que se possa chamar simplesmente de ‘valor’.

quando vc faz isso

int i;
i = 1034;

vc passa um valor primitivo, literal, para uma variavel.

vc não pode fazer isso

Object o;
o = 4593;

não faz sentido! faria sentido se vc tivesse um atributo publico do tipo inteiro

o.meuInteiro = 4795;

ou um método que entendesse isso

o.setAlgumaCoisa(3459);

porem, o seu objeto possui estes caras? AINDA NÃO! quando vc declara, vc ‘marca’ a sua variavel. vc precisa criar um novo objeto e carregar os atributos e/ou métodos necessários para a sua correta utilização.

Object o = new Object();

agora sim faz sentido algumas coisas como

if(o.equals(outroObjeto)){ … }

ai vc vai dizer ‘puxa mas pq eu tenho q fazer isso…’

por 2 motivos

  1. seu objeto pode receber um valor ‘nulo’

o = null

nesse caso seu objeto está ‘vazio’ e não tem nenhum método ou atributo, se vc tentar usar vai acabar acontecendo um NullPointerException. Quando isso acontece? imagine que vc fez uma consulta, vc quer um objeto que tenha todos as linhas de um banco de dados. se não for encontrado nada, o objeto PODE vir nulo. se o objeto PODE ser nulo, vc tem que analisar depois se o resultado é nulo ou não.

  1. vc pode usar outros construtores que não o do tipo do seu objeto

ClasseA algo = new ClasseB();
InterfaceA algo = new ClasseB();

eis algo não incomum em java, que possui as suas utilidades :wink:

D

zepunk

estou fazendo o FJ11 na Caelum =p

Amigos, obrigado pela ajuda…entendi que o construtor é quem inicializa a classe, mas eu continuo com 2 dúvidas:

public class Construtor
 {
     private String s1, s2;
 
     public Construtor()
    {
        this( "", "");
    }
 
     public Construtor(String s1, s2)
    {
        this.s1 = s1;
        this.s2 = s2;
    }
 
     public static void main(String[] args)
     {
          new Construtor(); // vai chamar o construtor sem parâmetro
          new Construtor("Java", "Teste"); // chama o construtor com parâmetro
     }
 }

Não entendi isso:

public Construtor()
    {
        this( "", "");
    }
 
     public Construtor(String s1, s2)
    {
        this.s1 = s1;
        this.s2 = s2;
    }

Não entendi o pq de estar recebendo alguma coisa…e vamos supor q eu declaro:

public class Abc {
   public Abc(){
      System.out.println("Surpresaaa!");
      int variavelX = 0;
      variavelX = 10000;
      System.out.println(variavelX);
   }
}
// outra classe qlqr, eu digito:
    
     Abc classe = new Abc():

Quando eu rodar o new Abc(), ele vai executar todos os parâmetros que eu passei…tipo o System, jogar o valor na variavelX??

D

Deh:

não sei se tirei a sua dúvida =/ e quanto a tipos de arquivo eu não entendi… como assim tipos de arquivos?
e me desculpem se eu errei em algo! e me corrijam se cometi algum…
abraços !

tipos de arquivo = “static”

não entendi o que é e nem como funciona ou quando eu preciso usar!

[]'s

nandobgi

Para maiores informações sobre “static” consulte a sessão artigos aqui do guj mesmo:

http://www.guj.com.br/java.tutorial.artigo.121.1.guj

[ ]'s

loganwlogan

Bem construtor é o que constrói um objeto pra vc, ele pode ter ou não parâmetros quando vc usa um construtor vc ta criando um objeto ex:
Imaginemos um objeto Filme vc 1ª cria um objeto colocando o nome da classe depois o nome que vc quer que o objeto tenha mais “=” a palavra reservada new o nome da classe nova mente e entre parênteses os parâmetros casa esista se não existir vc coloca só “()”. Fica assim:

Filme umFilme = new Filme(cod, nomeFilme, elenco, duracao, diretor);

a cima eu chamei o construtor da classe Filme para instanciar o objeto umFilme que recebeu como parâmentros as variáveis cod, nomeFilme, elenco, duracao e diretor o construtor na classe Filme ficaria mais ou menos assimm

public Fime(int cod, String Nome, String elenco, String duracao, String Diretor){

this.setCod(cod);

this.setNome(nome);

this.setElenco(elenco);

this.setDuracao(duracao);

this.setDiretor(diretor);

será que ajudei?

dudaskank

Nessa classe, existem 2 construtores, um sem parâmetros, e outro recebendo duas Strings.

O que é feito no primeiro construtor simplesmente é chamar o outro construtor, passando strings vazias para inicializar as variáveis, para reaproveitar o código que já existe.

Beleza? Falou

Criado 28 de setembro de 2006
Ultima resposta 28 de set. de 2006
Respostas 9
Participantes 8