Comando new e construtores

Galera o operador new é responsável em alocar memória para as variáveis de instância, de chamar o construtor e retornar a referência do objeto?
Já o construtor é apenas responsável em executar comandos descritos dentro de seu escopo e nada mais, como por exemplo inicializar as variáveis de instância. Os construtores não são responsáveis em retornar a referência do objeto e nem em criar o objeto em si certo?
Fiquei na dúvida ao ler um artigo meio duvidoso sobre java, falando sobre chamadas explicidas de construtores da superclasse.

obrigado

Quais artigos?

vou ficar te devendo, li no computador da faculdade e nao me lembro mais qual era o site. Procurei aqui e não achei.

Bem, minhas dicas:

  1. Use artigos somentes de fontes confiáveis. Já vi alguns artigos falando bobagens, ao procurar determinados assuntos no Google.

  2. Na dúvida, vá direto na fonte oficial: a documentação da Oracle/SUN;

Creating Objects
Providing Constructors for Your Classes

Oi,

Definição excelente:

“O operador new cria um objeto enquanto o programa está sendo executado, obtendo memória suficiente para armazenar um objeto do tipo especificado à direita de new. O processo de criar novos objetos é também conhecido como criar uma instância ou instanciar um objeto. O operador new é conhecido como operador de alocação de memória dinâmica. O valor entre parênteses depois do tipo em um operador new é utilizado para inicializar (i. e., atribuir um valor a) o novo objeto”. (Java, como programar / H. M. Deitei e P. J. Deitei; trad. Carlos Arthur Lang Lisboa. - 4,ed. - Porto Alegre: Bookman, 2003, p.192).

Tchauzin!

vou tentar imaginar o new na forma mais simplista possivel

[code]public Referencia New(TipoObjeto){

Referencia instancia = AlocarMemoria(TipoObjeto);

instancia.executarConstrutor();

return instancia;

}[/code]

espero que eu esteja correto

Valeu galera!

[quote=dntalemao]Galera o operador new é responsável em alocar memória para as variáveis de instância, de chamar o construtor e retornar a referência do objeto?
[/quote]

Não bem. O responsável por alocar a memória é a JVM. new não é o mesmo que o maloc do C. Ele não devolve a referencia, ele devolve o objeto construido (as referencias são implicitas em java). Em resumo, ele é apenas uma forma de comandar a classe a executar o contrutor e devolver o objeto.

O construtor é um menbro da classe, não do objeto ( é um static especial)

Certo. Quando o contrutor é invocado o objeto já existe, já foi construido pela JVM. O nome certo para o contrutor deveria ser “inicializador”, mas o nome “contrutor” é melhor porque remete ao padrão Builder. O objeto já existe (vc pode usar “this”) mas ele não está em um estado consistente. O trabalho do construtor é esse, deixar o objeto em um estado consistente. Existem algumas especificidades como o uso de final em variáveis de instancia que significa que elas devem estar inicializadas quando o construtor acabar ( exactament por causa da consisência)

Em outras linguagens o construtor é mais parecido com um método estático e até é invocado como um, usando um sintaxe como Cliente.new().
No java 8 está sendo previsto que isto também exista em java isto porque a partir do java 8 teremos Functors o que singnifica que todos os métodos das classes podem virar objetos de função ( especilamente os estáticos) e como os construtores não métodos especiais eles também poderão ser transformados em functors ( encapsulados numa nova interface chamada Factory).

Na prática vc pode encarar os construtores como métodos especiais que a jvm invoca ,mas que o prrgrama não pode invocar diretamente. O new é a forma de vc comandar a jvm a invocar o construtor.

Excelente! Clareou muito aqui, valeu mesmo galera!