Toda classe java segue algumas regras, entre elas, está a questão da nomenclatura da classe e do arquivo onde ela foi salva.
Caso a classe seja indicada com o modificador “public”, o arquivo que a contém precisa, obrigatoriamente, ter o mesmo nome da classe.
Por exemplo, se você salvar a classe
public class NomeDaClasse{
...
}
num arquivo com nome diferente de NomeDaClasse.java o compilador acusará erro.
Toda classe possui, mesmo que oculto, um construtor, cuja finalidade é chamar ao método construtor da sua superclasse, no caso, como todas extendem de Object, no mínimo a chamada super se refere à esta classe.
O construtor é utilizado para que a JVM instancie os objetos a partir desta classe e, este, pode ser único e oculto ou, explícito e único ou ainda, explícito e sobrescrito.
Quando não se define um construtor para uma classe, a JVM provê um padrão, sem parâmetros ou quaisquer ações internas.
Quando se cria um construtor explícito, não há a criação deste padrão.
Quando se tem a necessidade de construir mais de um construtor, cada um deles deverá ter um tipo ou número diferente de parâmetros
public class NomeDaClasse{
public NomeDaClasse(String nome){
//logica aqui
}
public NomeDaClasse(int cod){
//logica aqui
}
}