Classes nomenclatura(Arquivo/nome da classe)

Pessoal,

Tenho essa classe abaixo… e nenhuma esta com o modificador de acesso “public” sendo assim não me obriga ter o arquivo(“Classe.java”) ser do mesmo
nome da classe(class ClasseQualquerNome{} ) como abaixo, alguem saberia me explicar o porque isso não acontece… tem algum limite para ter classes no mesmo arquivo?

[code]package teste3;

class MyException extends Exception {}

class Tire {
void doStuff() throws Exception {}
}

class Retread extends Tire{
public static void main(String args[]) throws Exception {
new Retread().doStuff();
}

@Override
void doStuff() throws Exception, ClassCastException {
	
}  

} [/code]

A resposta vem das definições (regras) da linguagem. Quando uma classe é indicada com o modificador public, OBRIGATORIAMENTE o arquivo onde ela será escrita deverá possuir o mesmo nome. Por quê? Ora, por que os caras quiseram assim.
Quanto ao limite de classes, não.
Você pode fazer um sistema inteiro com 1000 classes, todas no mesmo arquivo. Mas que terá um baita trabalho, ah terá.
Além de não ser uma boa prática, você corre o risco de ter que reescrever várias linhas do teu código, caso inicie outro projeto.

[quote=drsmachado]A resposta vem das definições (regras) da linguagem. Quando uma classe é indicada com o modificador public, OBRIGATORIAMENTE o arquivo onde ela será escrita deverá possuir o mesmo nome. Por quê? Ora, por que os caras quiseram assim.
Quanto ao limite de classes, não.
Você pode fazer um sistema inteiro com 1000 classes, todas no mesmo arquivo. Mas que terá um baita trabalho, ah terá.
Além de não ser uma boa prática, você corre o risco de ter que reescrever várias linhas do teu código, caso inicie outro projeto.[/quote]

Que padrão estranho… então será que ele coloca o “default” antes? que nem nas propiedades da classe…

outra coisa ridicula é o inner class… rs…

Peraí.
A integridade das estruturas das classes é garantida por esta regra.
Não sei qual o teu conhecimento ou qual tua estrutura para dizer que algo no java é ridículo, afinal, é a linguagem de programação mais utilizada no mundo.
Inner class é uma forma de resolver problemas que uma class externa não poderia.
Quando você se deparar com a necessidade de usar uma thread separada para processar algo lento, você compreenderá isto.
Já pensou, um sistema de banco, que precisa de resposta imediata, travar por 20 segundos, por que uma thread “doidona” resolveu disparar seu processo?

[quote=dtxk][quote=drsmachado]A resposta vem das definições (regras) da linguagem. Quando uma classe é indicada com o modificador public, OBRIGATORIAMENTE o arquivo onde ela será escrita deverá possuir o mesmo nome. Por quê? Ora, por que os caras quiseram assim.
Quanto ao limite de classes, não.
Você pode fazer um sistema inteiro com 1000 classes, todas no mesmo arquivo. Mas que terá um baita trabalho, ah terá.
Além de não ser uma boa prática, você corre o risco de ter que reescrever várias linhas do teu código, caso inicie outro projeto.[/quote]

Que padrão estranho… então será que ele coloca o “default” antes? que nem nas propiedades da classe…

outra coisa ridicula é o inner class… rs…[/quote]

Se entendi o que está dizendo, quando não há um modificador de acesso na frente do nome da classe, implicitamente há um “default”.
Complementando o que foi dito pelo drsmachado, se dentro de um arquivo nenhuma classe for marcada como “public”, então você pode colocar o nome que quiser no arquivo.

Não, não tem nada de default.
Esquece essa coisa de default.
Ela é apenas uma class. Uma class perdida, pois somente a classe pública do arquivo em questão a conhecerá (e as demais classes sem modificador)

[quote=drsmachado]Peraí.
A integridade das estruturas das classes é garantida por esta regra.
Não sei qual o teu conhecimento ou qual tua estrutura para dizer que algo no java é ridículo, afinal, é a linguagem de programação mais utilizada no mundo.
Inner class é uma forma de resolver problemas que uma class externa não poderia.
Quando você se deparar com a necessidade de usar uma thread separada para processar algo lento, você compreenderá isto.
Já pensou, um sistema de banco, que precisa de resposta imediata, travar por 20 segundos, por que uma thread “doidona” resolveu disparar seu processo?[/quote]
Mals pelo ridiculo… me expressei mal…

[quote=drsmachado]Não, não tem nada de default.
Esquece essa coisa de default.
Ela é apenas uma class. Uma class perdida, pois somente a classe pública do arquivo em questão a conhecerá (e as demais classes sem modificador)[/quote]

deve apenas ter o public em questão… referente ao “default” foi soh uma forma de me expressar…

O que acontece é que sem indicar a classe como public ela fica “invisível” para as demais, que não estão no mesmo arquivo.

[quote=drsmachado]Não, não tem nada de default.
Esquece essa coisa de default.
Ela é apenas uma class. Uma class perdida, pois somente a classe pública do arquivo em questão a conhecerá (e as demais classes sem modificador)[/quote]
Então não tem um modificador de acesso default ali na frente do nome da classe?

qndo vc não coloca o modificador de acesso, ele automaticamente recebe o default

mas creio que o drsmachado estava falando pra ele esquecer só pra nao confundir mais

Acho que confunde mais falando pra esquecer algo que na realidade ESTÁ ali, mas tudo bem, cada um tem seu ponto de vista.