Melhor resposta
Se uma classe não tiver nenhum modificador de acesso, ela será tratada sob o modificador de acesso padrão.
O modificador de acesso padrão significa que não declaramos explicitamente um modificador de acesso para uma classe, campo, método, etc.
Uma variável ou método declarado sem qualquer modificador de controle de acesso está disponível para qualquer outra classe no mesmo pacote. Os campos em uma interface são implicitamente public static final e os métodos em uma interface são public por padrão.
Public -Uma classe, método, construtor, interface, etc. declarado public pode ser acessado de qualquer outra classe . Portanto, campos, métodos, blocos declarados dentro de uma classe pública podem ser acessados de qualquer classe pertencente ao Universo Java.
No entanto, se a classe pública que estamos tentando acessar estiver em um pacote diferente, então o a classe pública ainda precisa ser importada. Por causa da herança de classe, todos os métodos públicos e variáveis de uma classe são herdados por suas subclasses.
Exemplo
Public static void main (string [] args)
{
// …………………………………
}
O método main () de um aplicativo deve ser público. Caso contrário, ele não poderia ser chamado por um interpretador Java (como java) para executar a classe.
Resposta
Um arquivo Java pode ter qualquer nenhuma definição de classe. quando compilamos o arquivo java, o compilador gera arquivos .class independentes para cada definição de classe.
Se o seu arquivo java tiver uma única classe principal, não há necessidade de defini-lo como público.
Se o seu arquivo Java tiver várias classes, você não pode tornar todas as classes públicas porque apenas uma classe pública é permitida em qualquer arquivo Java. aqui, o nome da classe pública e o nome do arquivo Java devem ser iguais.
//filename: Main6.java
class Demo2
{
public void Demo2()
{
System.out.println("Hello world");
}
}
class Main6
{
public static void main(String[] args)
{
Demo2 d=new Demo2();
d.Demo2();
}
}
output
Hello world
No exemplo acima, eu não declarei a classe principal como pública e ainda está funcionando porque dei o nome da classe principal como o nome do arquivo.
//filename: Main6.java
public class Demo2
{
public void Demo2()
{
System.out.println("Hello world");
}
}
class Main6
{
public static void main(String[] args)
{
Demo2 d=new Demo2();
d.Demo2();
}
}
output:
Main6.java:1: error: class Demo2 is public, should be declared in a file named Demo2.java
Agora veja, desta vez ele está me dando um erro. portanto, é uma boa prática definir sua classe principal como pública se você tiver várias classes em um arquivo java. Como sabemos, a execução do programa começa no método principal.
Espero que você tenha a resposta