Padrão Âmbito em Java
Como seus aplicativos Java se tornam mais complexas, a necessidade de considerar a possibilidade torna-se cada vez mais importante. A principal razão é que você pode inadvertidamente introduzir um bug em seu aplicativo por não observar regras de escopo.
Isso pode resultar de um campo ou outro membro que está sendo usado incorretamente pela aplicação (como adicionar um valor de dados incorretos ou acessar um método no momento errado ou com dados incorretos). Além disso, o escopo incorreto pode deixar a porta aberta para pessoas de fora para interagir com o aplicativo de maneiras imprevistas (como um vírus).
O escopo padrão ocorre quando você não especificamente atribuir um escopo a um elemento de classe. Porque muitos desenvolvedores Java têm idéia do que o escopo padrão é para alguns elementos (e usando um escopo padrão significa que seu código não está documentado), ele não é usado com muita freqüência.
Mesmo assim, você precisa saber o que o escopo padrão é para vários elementos porque alguns desenvolvedores Java não contar com ele. No entanto, antes que você possa compreender o alcance padrão, você precisa considerar visibilidade - a medida de que elementos do aplicativo pode ver um membro. Java oferece os seguintes níveis de visibilidade (em ordem geral de encapsulamento):
Pacote: O recipiente utilizado para manter um número de classes. Ao trabalhar com uma estrutura de diretório simples, como os exemplos deste livro faz, o pacote é um diretório que contém uma série de arquivos .class.
Classe: Uma classe geralmente reside em um único arquivo .java que você compilar em um arquivo .class. Ele contém uma única declaração de classe.
Método: Um elemento pode residir na classe ou como parte de um método. O método funciona como um recipiente para segurar o elemento.
Quadra: Um elemento pode residir dentro de um bloco de código, como um loop for.
Âmbito parcialmente depende do local usado para declarar um elemento. Por exemplo, uma variável que é definido dentro de um bloco (como um loop for) é visível somente dentro desse bloco. Ao tentar usar a variável fora do bloco, Java exibe uma exceção. Levando em conta a visibilidade, esta tabela descreve os vários níveis de escopo dentro do ambiente Java.
Visibilidade | privado | (padrão) | protegido | público |
---|---|---|---|---|
Acessível a partir da classe | x | x | x | x |
Acessível a partir do pacote | x | x | x | |
Acessível a partir de qualquer classe criança | x | x | ||
acessível em qualquer lugar | x |
A tabela mostra como o escopo padrão se encaixa no esquema das coisas. Por exemplo, se você declarar um método utilizando o escopo padrão, qualquer método pode usá-lo contanto que reside no mesmo pacote. Além disso, se criar uma classe que herda da classe contendo o método, a subclasse pode usar o método desde que reside no mesmo pacote.
No entanto, se a subclasse existe fora do pacote actual, não pode usar o método. Em suma, o escopo padrão é um pouco mais restritiva do que o âmbito protegidos, mas menos restritiva do que o âmbito privado.