Contrutor Padrão

25 respostas
A
Oi pessoal, estou estudando para SCJP 1.4 e fazendo simulado do DAN encontrei a seguinte questão:
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.

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?

25 Respostas

pcalcado

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

[]s

*editado

jgbt

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

danieldestro

A, B, C - APENAAASSS

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

A

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

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

jgbt

agora confundiu de novo…

[]'s

danieldestro

Isto é um construtor padrão:

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

pcalcado

Destro, tu so esqueceu de uma coisa:

jgbt

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

danieldestro

Eu ví e arrumei a tempo.

A

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?

danieldestro

Isso.

A

Valeu pessoal!!!
:thumbup:

Java_Vinicius_Machin

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

Fabricio_Cozer_Marti

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

pcalcado

fmartins:
Constructor default soh pode ter acesso public ou default,

public, private, protected package… default?

Fabricio_Cozer_Marti

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

pcalcado

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

Fabricio_Cozer_Marti

ih cara .. agora fiquei na duvida!

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

class T {
    class A{
        A(){
            System.out.println("A");
        }
    }
    private class B extends A {      
    }

}
pcalcado

[quote=pcalcado]

Java Language Specification Second Edition:
if the class is declared private, then the default constructor is implicitly given the access modifier private (§6.6);

Fabricio_Cozer_Marti

na verdade o acesso package eh o padrao(default) qdo vc naum adiciona nenhuma controle de acesso …

pcalcado

Se você está falando em controle de acessos, que package é o padrão/default, foi o que eu falei acima, mas note que não existe um controle cahamdo “default”

Se você está falando em construtores padrão, o construtor tem o nível de acesso da classe.

[]s

Fabricio_Cozer_Marti

Cara, achei esse trecho no livro de Kathy … caso tenha alguma questao q se refira a “default access”, irei relacionar ao quarto nivel de controle de acesso, não tem mais dúvidas!

“book’s kathy sierra”:

The fourth access control
level (called default or package access) is what you get when you don’t use any of the
three access modifiers…

Fabricio_Cozer_Marti

ai vai uma questao do livro de kathy …

1. What is the most restrictive access modifier that will allow members of one class to have access
to members of another class in the same package?

A. public
B. abstract
C. protected
D. synchronized
E. default access
pcalcado

Olá,

Não ole o livro, olhe a especificação:

default é um conceito, não um nome.

[]s

Fabricio_Cozer_Marti

Não disse que default era um nome,e nem é mesmo, não disse que ele era um modificador e nem é mesmo,
disse apenas que era um nível de accesso especificado pelo java,
quando não é especificado pelo programador nenhum modificador…
E tem lógica, já que o default como você disse é um conceito, e pelo que sei, default, é algo que é setado por outro quando não setamos…
como você mesmo postou, olhei e conferi!..

mas tudo bem,
vamos ficar por aqui , por que eu já entendi, e acho q todo mundo tb, senão isso vai tornar uma Thread Dead Lock!

Criado 3 de março de 2005
Ultima resposta 7 de mar. de 2005
Respostas 25
Participantes 6