Qual é o propósito de ter mais de uma classe em um arquivo Java? Eu sou novo em Java.
Editado: Isso pode ser alcançado criando uma classe interna dentro de uma classe pública, certo?
Qual é o propósito de ter mais de uma classe em um arquivo Java? Eu sou novo em Java.
Editado: Isso pode ser alcançado criando uma classe interna dentro de uma classe pública, certo?
Respostas:
Sim pode. No entanto, só pode haver uma classe pública de nível superior por .java
arquivo, e as classes públicas de nível superior devem ter o mesmo nome do arquivo de origem.
O objetivo de incluir várias classes em um arquivo de origem é agrupar a funcionalidade de suporte relacionada (estruturas de dados internas, classes de suporte, etc.) junto com a classe pública principal. Observe que é sempre bom não fazer isso - o único efeito é na legibilidade (ou não) do seu código.
java.awt.LightweightDispatcher
?
Se você deseja implementar uma classe pública, deve implementá-la em um arquivo com o mesmo nome dessa classe. Um único arquivo pode conter uma classe pública e opcionalmente algumas classes privadas. Isso é útil se as classes são usadas apenas internamente pela classe pública. Além disso, a classe pública também pode conter classes internas.
Embora seja bom ter uma ou mais classes privadas em um único arquivo de origem, eu diria que é mais legível usar classes internas e anônimas. Por exemplo, pode-se usar uma classe anônima para definir uma classe Comparator dentro de uma classe pública:
public static Comparator MyComparator = new Comparator() {
public int compare(Object obj, Object anotherObj) {
}
};
A classe Comparator normalmente requer um arquivo separado para ser pública. Dessa forma, ele é empacotado com a classe que o usa.
Um arquivo .java é chamado de unidade de compilação. Cada unidade de compilação pode conter qualquer número de classes e interfaces de nível superior. Se não houver tipos públicos de nível superior, a unidade de compilação pode receber qualquer nome.
//Multiple.java
//preceding package and import statements
class MyClass{...}
interface Service{...}
...
//No public classes or interfaces
...
Só pode haver uma classe / interface pública em uma unidade de compilação. O cu deve ser nomeado exatamente como este tipo público de nível superior.
//Test.java
//named exactly as the public class Test
public class Test{...}
//!public class Operations{...}
interface Selector{...}
...
//Other non-public classes/interfaces
Pontos importantes sobre o método principal - parte 1
(Pontos sobre o número de classes e seus níveis de acesso cobertos na parte 2)
Além das classes internas anônimas, outro uso são as classes internas privadas que implementam uma interface pública ( consulte este artigo ). A classe externa pode acessar todos os campos e métodos privados da classe interna.
Isso permite criar duas classes fortemente acopladas, como um modelo e sua visualização, sem expor as implementações de qualquer um. Outro exemplo é uma coleção e seus iteradores.
Em geral, deve haver uma classe por arquivo. Se você organizar as coisas dessa maneira, quando pesquisar uma turma, saberá que só precisa pesquisar o arquivo com aquele nome.
A exceção é quando uma classe é melhor implementada usando uma ou mais pequenas classes auxiliares. Normalmente, o código é mais fácil de seguir quando essas classes estão presentes no mesmo arquivo. Por exemplo, você pode precisar de uma pequena classe de wrapper 'tupla' para passar alguns dados entre chamadas de método. Outro exemplo são as classes de 'tarefa' que implementam Runnable ou Callable. Eles podem ser tão pequenos que são mais bem combinados com a classe pai os criando e chamando.
Sim 200% ,
Exemplo:
class A {
void methodDeclaration() { System.out.println("!!!"); }
}
class B {
public static void main(String[] args) {
new A().methodDeclaration();
}
}
Sim, pode, mas só pode haver 1 classe pública dentro de qualquer pacote, pois o compilador java cria o arquivo .Class que tem o mesmo nome que o nome da classe Pública, portanto, se houver mais de 1 classe pública, seria difícil selecionar compilador que qual deve ser o nome do arquivo de classe.
Varia ... Um exemplo seria uma classe anônima (você encontrará muitas delas ao usar ouvintes de eventos e outros).
Eu acho que deveria ser "só pode haver uma classe pública de nível superior NÃO ESTÁTICO por arquivo .java". Não é?
Se você deseja implementar um singleton, que é uma classe que roda em seu programa com apenas uma instância na memória durante a execução do aplicativo, uma das maneiras de implementar um singleton é aninhar uma classe estática privada dentro de uma classe pública . Então, a classe privada interna apenas se instancia quando seu método público para acessar a instância privada é chamado.
Confira este artigo wiki,
https://en.wikipedia.org/wiki/Singleton_pattern
O conceito demora um pouco para ser mastigado.
Em um arquivo .java, pode haver apenas uma classe pública de nível superior cujo nome é o mesmo do arquivo, mas pode haver várias classes internas públicas que podem ser exportadas para todos e acessar os campos / métodos da classe externa, por exemplo : AlertDialog.Builder (modificado por 'public static') em AlertDialog (modificado por 'public')
Sim, você pode ter mais de uma classe em um arquivo .Java. Mas você tem que tornar um deles Público. e salve o arquivo .java com o mesmo nome da classe pública. quando você compilar esse arquivo .java, obterá arquivos .class separados para cada classe definida no arquivo .java.
Além disso, existem muitos métodos para definir mais de uma classe em um arquivo .java.
Sim ! O arquivo .java pode conter apenas uma classe pública.
Se você deseja que essas duas classes sejam públicas, elas devem ser colocadas em dois arquivos .java: A.java e B.java.
Sim, você pode ter mais de uma classe dentro de um arquivo .java. No máximo um deles pode ser público. Os outros são pacotes privados. Eles NÃO PODEM ser privados ou protegidos. Se um for público, o arquivo deve ter o nome dessa classe. Caso contrário, QUALQUER COISA pode ser dado a esse arquivo como seu nome.
Ter muitas classes dentro de um arquivo significa que essas classes estão no mesmo pacote. Portanto, quaisquer outras classes que estão dentro desse pacote, mas não naquele arquivo, também podem usar essas classes. Além disso, quando esse pacote é importado, a classe importadora também pode usá-los.
Para uma investigação mais detalhada, você pode visitar minha postagem do blog aqui .
Só pode haver uma classe pública de nível superior em um arquivo. O nome da classe dessa classe pública deve ser o nome do arquivo. Ele pode ter muitas classes internas públicas.
Você pode ter muitas classes em um único arquivo. Os limites para vários níveis de visibilidade de classe em um arquivo são os seguintes:
Classes de nível superior:
1 classe pública
0 classe privada
qualquer número de classes padrão / protegidas
Classes internas:
qualquer número de classes internas com qualquer visibilidade (padrão, privado, protegido, público)
Por favor corrija-me se eu estiver errado.
Sim pode. No entanto, só pode haver uma classe pública por arquivo .java, pois as classes públicas devem ter o mesmo nome do arquivo de origem.