Construtor é método ou não?

Quanto ao bloco estático, a história é a mesma do construtor.
Na linguagem Java, o bloco estático não é um método. Mas para JVM ele é um método especial estático chamado “<clinit>”, sem parâmetros e com retorno void.

Da mesma forma o construtor, para a JVM se torna um método estático especial chamado “<init>” com retorno void também.

Boa tarde a todos.

Para dissipar algumas dúvidas e polêmicas sobre Método Construtor não ser método, então ai vai a definição do significado da palavra “Método”.

De acordo com o especificado no ítem 4 do enunciado acima, se um construtor de uma classe é considerado um procedimento, um algoritimo, função ou ação que responde a certas mensagens (provocados pelo usuário ou pelo sistema), então o Construtor de uma Classe é um Método.

Além disso, métodos tem certas peculiaridades como fazer sobreescrita ou sobrecarga dos mesmos, se o método construtor permite voce fazer isso, então definitivamente o Construtor de uma Classe é um Método.

[quote=discorpio]De acordo com o especificado no ítem 4 do enunciado acima, se um construtor de uma classe é considerado um procedimento, um algoritimo, função ou ação que responde a certas mensagens (provocados pelo usuário ou pelo sistema), então o Construtor de uma Classe é um Método.

Além disso, métodos tem certas peculiaridades como fazer sobreescrita ou sobrecarga dos mesmos, se o método construtor permite voce fazer isso, então definitivamente o Construtor de uma Classe é um Método.[/quote]
Não, não é. Construtor sequer é um membro da classe (ao contrário dos métodos). Basta se aprofundar um pouco em reflection que isso fica extremamente claro.

Fora tudo que já disseram (que o construtor não permite ser herdado, o método sim; que o construtor não permite modificador final, o método sim; que o construtor não pode ser chamado de um método de instância da própria classe, o método sim), a especificação da linguagem Java é bem clara:

Além disso, em reflection Constructor não herda de Method (o que implica que ele não é um).

Ontem fiz uma prova de concurso publico para o parana previdencia. Uma das questões abordava exatamente isto.
Porem temos opiniões muito distintas, não existe uma informação oficial a respeito disto na especificação da linguagem e muito menos em alguma literatura clássica
para mim como para muitos construtores não são métodos pois o mesmo tem propriedades diferentes que métodos. Já para outros são. Como este assunto é algo que se trata de ponto de vista não acho que o mesmo deveria existir em uma questão de concurso. Será que adianta entrar com pedido protocolado de anulação de questão? Ou é perca de tempo?

Entre caso tenha sido prejudicado, e se esta questão vai fazer diferença no teu ranking.

[quote=luistiagos]Ontem fiz uma prova de concurso publico para o parana previdencia. Uma das questões abordava exatamente isto.
Porem temos opiniões muito distintas, não existe uma informação oficial a respeito disto na especificação da linguagem e muito menos em alguma literatura clássica
para mim como para muitos construtores não são métodos pois o mesmo tem propriedades diferentes que métodos. Já para outros são. Como este assunto é algo que se trata de ponto de vista não acho que o mesmo deveria existir em uma questão de concurso. Será que adianta entrar com pedido protocolado de anulação de questão? Ou é perca de tempo?
[/quote]

Vários anos depois … eis uma ideia muito louca.

Um construtor não é um método porque a classe Constructor não herda de Method :slight_smile:
(constructor e method são classes de reflection )

Agora, se isso será aceite como prova… não sei. Para mim não é controverso. Basta ver que a estrutura de um construtor não é a de um método ( não tem retorno) ,mas entendo que ha dois legumes nessa faca.

[quote=sergiotaborda][quote=luistiagos]Ontem fiz uma prova de concurso publico para o parana previdencia. Uma das questões abordava exatamente isto.
Porem temos opiniões muito distintas, não existe uma informação oficial a respeito disto na especificação da linguagem e muito menos em alguma literatura clássica
para mim como para muitos construtores não são métodos pois o mesmo tem propriedades diferentes que métodos. Já para outros são. Como este assunto é algo que se trata de ponto de vista não acho que o mesmo deveria existir em uma questão de concurso. Será que adianta entrar com pedido protocolado de anulação de questão? Ou é perca de tempo?
[/quote]

Vários anos depois … eis uma ideia muito louca.

Um construtor não é um método porque a classe Constructor não herda de Method :slight_smile:
(constructor e method são classes de reflection )

Agora, se isso será aceite como prova… não sei. Para mim não é controverso. Basta ver que a estrutura de um construtor não é a de um método ( não tem retorno) ,mas entendo que ha dois legumes nessa faca.
[/quote]

Acho que isso pode definir que o construtor realmente não é um método. No livro da Deitel e da Kathy Sierra eles também afirmam que construtor não é método pois não tem retorno.

[quote=luistiagos]Ontem fiz uma prova de concurso publico para o parana previdencia. Uma das questões abordava exatamente isto.
Porem temos opiniões muito distintas, não existe uma informação oficial a respeito disto na especificação da linguagem e muito menos em alguma literatura clássica
para mim como para muitos construtores não são métodos pois o mesmo tem propriedades diferentes que métodos. Já para outros são. Como este assunto é algo que se trata de ponto de vista não acho que o mesmo deveria existir em uma questão de concurso. Será que adianta entrar com pedido protocolado de anulação de questão? Ou é perca de tempo?
[/quote]

honetamente achoque você poderia pedir para anular se “for vantajoso” (se a resposta escolhida como correta não foi a que você marcou), mas considero que essa questão nem deveria ter…

Na verdade nem vou esquentar a cabeça com isto… Uma questão a mais ou a menos não faz muita diferença.

Porem o que me impressiona e como estas provas de concursos são mal elaboradas sem sequer revisões. O que mais me impressionou nesta prova foi a quantidade de questões de direito. Na parte de conhecimentos gerais tinham 10 questões de direito e na parte de conhecimento especificos mais 10 questões de direto, em base apenas teve 10 questões ligadas a tecnologia sendo 5 de governança em TI. Ou seja se um advogado fizesse esta prova ele teria bem mais chance do que um profissional de TI. Chego até pensar o que eles queriam um advogado que sabe um pouco de TI ou alguém realmente de TI? Este tipo de coisa que é revoltante nesses concursos. Se querem um advogado que coloquem no edital vaga para advogado com noções de governança em TI.

[quote=luistiagos]Ontem fiz uma prova de concurso publico para o parana previdencia. Uma das questões abordava exatamente isto.
Porem temos opiniões muito distintas, não existe uma informação oficial a respeito disto na especificação da linguagem e muito menos em alguma literatura clássica
para mim como para muitos construtores não são métodos pois o mesmo tem propriedades diferentes que métodos. Já para outros são. Como este assunto é algo que se trata de ponto de vista não acho que o mesmo deveria existir em uma questão de concurso. Será que adianta entrar com pedido protocolado de anulação de questão? Ou é perca de tempo?
[/quote]Você pode protocolar sim, porém, neste caso é necessário verificar se essa informação existe nas referências bibliográficas aplicadas à prova. Se nelas não contiver a informação, sim, você pode. Caso contrário, vale o que está lá (mesmo não concordando) daí você terá que contra-argumentar expondo seu ponto de vista (preferencialmente citando referências bibliográficas).