Contrutor Padrão

Oi pessoal, estou estudando para SCJP 1.4 e fazendo simulado do DAN encontrei a seguinte questão:[code]Which of the following statements are true?

a. The compiler will create a default constructor if no other constructor is declared.
b. The default constructor takes no arguments.
c. If a class A has a direct superclass, then the default constructor of class A invokes the no-argument constructor of the superclass.
d. The default constructor declares Exception in the throws clause.
e. The default constructor is always given the private access modifier.
f. The default constructor is always given the public modifier.
g. The default constructor is always given default package access.
[/code]

Como resposta estão marcadas como corretas as opções A,B e C.
Mas eu havia marcado a opção G também, o construtor default não tem acesso padrão?

mais em Java Language Specification. Acho que todo certificado e/ou certificando deveria utilizá-la :wink:

[]s

*editado

mas então a letra f estaria certa…
acho que ele cria um construtor default de acordo com o modificador da classe… eu acho.
sera?
<editado>
agora acho que me esclareceu…
vlw!!!
</editado>
[]'s

A, B, C - APENAAASSS

[editado]caraca… eu não me decido[/editado]

:wink:
Então dependerá do acesso da classe.

Valeu pcalcado!!
:smiley: vou utilizar mais a especificação!!

agora confundiu de novo…

[]'s

Isto é um construtor padrão:

public NomeDaClasse() { // implementação vai aqui, se tiver }

Destro, tu so esqueceu de uma coisa:

pois é, eu sempre soube que o construtor padrão é como o Daniel postou.
mas esses dias vi, acho que em um simulado, algo parecido como o Pcalcado postou.
então fica a duvida, o Cconstrutor padrão é Public ou depende do modificador da classe???

[]'s

Eu ví e arrumei a tempo.

Concordamos então que as opções onde dizem que os construtores SEMPRE serão de um determinado tipo de acesso estão incorretas, pois irá depender do acesso da classe.

É isso?

Isso.

Valeu pessoal!!!
:thumbup:

O construtor padrão quando fornecido pelo compilador sempre sempre sempre recebe o modificador de acesso da classe que o mesmo pertence.

Constructor default soh pode ter acesso public ou default, isso porque
depende do acesso q a classe a que ele pertence possue…

[quote=fmartins]Constructor default soh pode ter acesso public ou default,
[/quote]

public, private, protected package… default?

isso pra classes top-level, já que elas so tem acesso padrao ou public

Desculpa, meu ponto é: esse nível de conrole de acesso não existe. O “default” é package, mas não existe um controle chamado “default”.

ih cara … agora fiquei na duvida!

nesse caso onde temos uma inner class ele cria um construtor default
com acesso private?

[code]
class T {
class A{
A(){
System.out.println(“A”);
}
}
private class B extends A {
}

}[/code]

[quote=pcalcado][quote=Java Language Specification Second Edition] if the class is declared private, then the default constructor is implicitly given the access modifier private (§6.6);
[/quote]