dúvida sobre classes

2 respostas
jason_bourne

Pessoal

Não entendi essa questão. Que a B é correta eu até entendo, mas pq a A ou a C não são corretas?

Qual das seguintes declarações de classes é valida? Considere que nenhuma das classes são aninhadas e cada uma está dentro de um arquivo ‘.java’ com o mesmo nome que a classe.

a) protected class Classe{}

b) public abstract class Classe{} //<–correta

c) private class Classe{}

d) static class Classe{}

e) synchronized Classe{}

2 Respostas

eltonk

A letra A, C, D e E estão erradas porque uma classe só pode ser pública e pode somente utilizar os modificadores abstract e final :wink:

[]'s

T

Agora vamos interpretar a língua de advogado, desculpe, a Java Language Specification.
Aqui você já deve entender que uma classe só pode ser: public, protected, private, abstract, static, final, strictfp, ou então não ter modificadores. Então ela não pode ser “synchronized”.
“Top Level Class” é a classe que não é aninhada.
Ele diz que “protected” e “private” só valem para classes aninhadas (“member classes within a directly enclosing class declaration”), assim como “static”.
Ele também diz que “public” deve ser para uma classe não aninhada (“top level class”) e em outro item (§7.6), ele diz que classes públicas, se forem armazenadas em arquivos, devem estar em um arquivo “.java” com o mesmo nome da classe.
Ele diz (por omissão) que uma classe não aninhada pode ser “package private”, ou seja, não é preciso usar “public”, mas nesse caso essa classe somente será visível dentro do seu pacote.
Aqui
Portanto a declaração correta é apenas “b”.

Criado 1 de junho de 2007
Ultima resposta 1 de jun. de 2007
Respostas 2
Participantes 3