Sim, é comum na literatura se referir a "método construtor", ou "função
construtora"
Na realidade, método é sinônimo de função, em C++, por exemplo, não se usa a
palavra método, e sim função.
No clássico de C++ (The C++ Programming Language, de Bjarne Stroustrup), na
página 30, lê-se:  "such an inicialization function is called a
constructor".

O construtor realmente não tem a sintaxe nem a semântica de um método comum.
Não tem tipo de retorno (embora retorne sempre um endereço), e é invocado de
forma diferente (através do comando new). O nome começa com letra maiuscula,
por ser um nome de classe. Portanto, tecnicamente não é um método como os
outros. Não é um método de instância, e também não é um método de classe.

O construtor reúne duas atividades: a criação do objeto na memória, e a
execução de um código específico para inicializar algumas das variáveis de
instância desse objeto. Além de retornar o endereço do primeiro byte da área
onde foi criado na memória. Esse código pode fazer outras coisas, por
exemplo, calcular um dígito verificador e abortar a criação se houver erro,
etc.

Em outros aspectos o construtor é similar a uma método de instância: tem sua
lista de parâmetros que são variáveis locais. E dentro dele pode-se usar a
pseudo-variável this para prefixar variáveis e métodos de instância do
objeto que está sendo criado.
Considere o seguinte exemplo de um construtor que, depois de construir e
inicializar um objeto, imprime na console uma mensagem informando o que
acabou de fazer:

public Aluno (Sting nome, String dre){
   this.nome = nome;

   this.dre = dre;
   System.out.println( "Foi criada uma instância de Aluno, de nome " +
this.nome + " e dre = " + this.getDre());
}






2010/4/10 Mateus Gregorio <[email protected]>

> > "Da mesma forma, se você declarar o construtor privado (lembrando que o
> construtor também é um
> > método, embora especial) ele não poderá ser chamado de outra classe,
> apenas dentro dela.
>
>
>
>
>
> Tenho uma dúvida: o construtor é mesmo um tipo especial de método?
>
> Eu sempre achei que sim, mas eu vi numa apostila um argumento que
> fundamenta o contrário.
> "*Construtor: um método especial?*
>  Um construtor não é um método. Algumas pessoas o chamam de um método
> especial, mas definitivamente
>
>  não é, já que não possui retorno e só é chamado durante a construção do
> objeto."
>
>
>
> (Fonte: Apostila Caelum - Ensino e Inovação - FJ-11 - Java e Orientação a
> Objetos, pág. 79)
>
> Link: http://downloads.caelum.com.br/apostila/caelum-java-objetos-fj11.pdf
>
>
>
>
>
> Na verdade, o construtor não retorna o endereço de memória do local onde o
> objeto foi criado? Ou quem faz isso é o comando new?
>
> Confuso :S
>
>
>
> Afinal, qual é a definição correta? Um construtor é ou não é um método?
>
>
>
>
>
> Abraços,
>
> Mateus Greg.
>
>  ------------------------------
> *De:* Peter P. Lupo <[email protected]>
> *Para:* [email protected]
> *Enviadas:* Sexta-feira, 9 de Abril de 2010 14:49:54
>
> *Assunto:* Re: [comp2-geral] Re: Lista 1 - Exercícios 1/2
>
> Isso mesmo. Apenas por preciosismo, "onde pessoa1 é uma referência para um
> objeto da classe Pessoa". ;-)
>
> Se você disser que um atributo é private, ele se comportará como o André
> explicou. Se você disser que um método é private também.
>
> Assim, se você declarar um método "private String getNome() { ..." este
> método só poderá ser acessado de dentro da classe.
>
> Da mesma forma, se você declarar o construtor privado (lembrando que o
> construtor também é um método, embora especial) ele não poderá ser chamado
> de outra classe, apenas dentro dela.
>
> Abraço
>
> Peter P. Lupo
> http://craftnicely.blogspot.com - http://sites.google.com/site/pplupo
> MPS.BR <http://mps.br/> Authorized Implementation Practitioner - Certified
> ScrumMaster
> Sun Certified Java Associate - Java Brown Belt
> +55 (021) 81742487
>
>
> 2010/4/9 André Santos <[email protected]>
>
>> O modificador private deixará o atributo visível apenas dentro da classe
>> em que se encontra. Por ex: a classe Pessoa possui uma variável de
>> instância: private String nome; Não será possível acessar pessoa1.nome(onde
>> pessoa1 é um objeto da classe Pessoa) fora da classe Pessoa(na TestaPessoa
>> por ex.).
>>
>> Em 9 de abril de 2010 14:27, Renan Machado 
>> <[email protected]>escreveu:
>>
>>
>>>
>>> professor , seguí seu conselho e lí o resumo das aulas . Eu não
>>> estava ,na verdade, entendendo muito bem a questão de variáreis
>>> private . Estava pensando que por ela ser do tipo private, não seria
>>> possível usar construtores para criar novos objetos, mas fazendo a
>>> lista ví que isso era possível . é isso mesmo ? Abraço
>>>
>>> --
>>>  You received this message because you are subscribed to the Google
>>> Groups "Comp 2 - Geral" group.
>>> To post to this group, send email to [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected]<comp2-geral%[email protected]>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/comp2-geral?hl=en.
>>>
>>>
>>
>>
>> --
>> André Santos Teixeira de Carvalho
>> Undergraduating in Computer Science DCC/UFRJ
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Comp 2 - Geral" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<comp2-geral%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/comp2-geral?hl=en.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Comp 2 - Geral" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<comp2-geral%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/comp2-geral?hl=en.
>
> ------------------------------
> Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 
> 10<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/>-
> Celebridades<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/celebridades/>-
> Música<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/m%C3%BAsica/>-
> Esportes<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/esportes/>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Comp 2 - Geral" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<comp2-geral%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/comp2-geral?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups "Comp 
2 - Geral" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/comp2-geral?hl=en.

Responder a