Hoje aprenderemos sobre o controle de direitos de acesso em Java. Antes de discutir o controle de acesso, vamos discutir por que o controle de acesso é necessário. Considere dois cenários:
Cenário 1: Engenheiro A escreveu uma classe de classe, mas o engenheiro A não deseja que a Classa seja acessada por outras classes usadas no aplicativo, então como devemos lidar com isso?
Cenário 2: Se o engenheiro A escreve uma aula de classe, que possui dois métodos Fun1 e Fun2, o engenheiro só quer que o Fun1 seja visível para o mundo exterior. Ou seja, se outros engenheiros ligarem para a Classa, eles só podem chamar o Method Fun1, então o que devemos fazer?
Neste momento, o controle de permissão de acesso pode desempenhar um papel.
Em Java, são fornecidos quatro tipos de controle de direitos de acesso: direitos de acesso padrão (direitos de acesso de pacotes), público, privado e protegido.
Observe que apenas as permissões de acesso padrão e o público podem ser usados para modificar a classe para os quatro tipos de acesso acima. As quatro permissões da classe modificada estão ok. (As classes mencionadas neste local estão direcionadas a classes externas, não a classes internas)
O seguinte explicará esses quatro controles de direitos de acesso para os membros da classe de modificação e da classe de modificação.
1. Categoria de modificação
Permissões de acesso padrão (Permissões de acesso ao pacote): Se usado para modificar uma classe, significa que a classe é visível apenas para outras classes no mesmo pacote.
Público: Se usado para modificar uma classe, significa que a classe é visível para todas as outras classes.
Vamos dar uma olhada na diferença entre os dois através de alguns exemplos:
Exemplo 1:
Main.java:
pacote com.cxh.test1; public class Main { / ** * @param args * / public static void main (string [] args) {// TODO Method Auto-Gerated Stub People People = New People ("Tom"); System.out.println (People.getName ()); }} Pessoas.java
pacote com.cxh.test1; classe People {// Permissão de acesso padrão (permissão de acesso ao pacote) Nome da sequência privada = null; Pessoas públicas (nome da string) {this.name = name; } public string getName () {return name; } public void setName (nome da string) {this.name = name; }}Como pode ser visto no código, modificar a classe People usa permissões de acesso padrão e, como a classe People e a classe principal estão no mesmo pacote, a classe People é visível para a classe principal.
Resultados em execução do programa:
Exemplo 2:
Pessoas.java
pacote com.cxh.test2; classe People {// Permissão de acesso padrão (permissão de acesso ao pacote) Nome da sequência privada = null; Pessoas públicas (nome da string) {this.name = name; } public string getName () {return name; } public void setName (nome da string) {this.name = name; }}Neste momento, a classe People e a classe principal não estão no mesmo pacote. O que vai acontecer?
Aqui estão os erros solicitados na classe principal:
Isso solicita que a classe Peolple não seja visível na classe principal. A partir disso, podemos ver que, se uma classe for modificada com permissões de acesso padrão, a classe é visível apenas para outras classes no mesmo pacote e não é visível para classes em pacotes diferentes.
Conforme mostrado no prompt de correção rápida na figura acima, se você alterar as permissões de acesso padrão da classe People para o público, a classe People será visível para a classe principal.
2. Métodos e variáveis de modificação de classes
Permissões de acesso padrão (permissões de acesso ao pacote): se os métodos ou variáveis de uma classe forem modificados por permissões de acesso ao pacote, isso significa que os métodos ou variáveis da classe só podem ser chamados de outras classes na mesma embalagem e os métodos ou variáveis da classe não podem ser chamados de classes em diferentes pacotes.
Privado: se os métodos ou variáveis de uma classe forem modificados por privado, os métodos ou variáveis da classe só poderão ser acessados na própria classe e não poderão ser exibidos na classe ou em outras classes.
Protegido: Se os métodos ou variáveis de uma classe forem modificados por protegidos, os métodos ou variáveis dessa classe podem ser acessados para a mesma classe de embalagem. Para classes com pacotes diferentes, apenas classes herdadas dessa classe podem acessar métodos ou variáveis dessa classe.
Público: Métodos ou variáveis modificadas por público são visíveis em qualquer lugar.
Vamos fazer alguns exemplos para ver as diferenças entre seus métodos e variáveis de classe escopo:
Exemplo 3:
Main.java não mudou
Pessoas.java
pacote com.cxh.test1; public class People {private string name = null; Pessoas públicas (nome da string) {this.name = name; } String getName () {// permissão de acesso padrão (permissão de acesso ao pacote) Nome de retorno; } void setName (nome da string) {// permissão de acesso padrão (permissão de acesso ao pacote) this.name = name; }}No momento, os métodos de chamada GetName e SetName podem ser exibidos na classe principal.
Mas se a classe People e a classe principal não estiverem no mesmo pacote:
pacote com.cxh.test2; // está em um pacote diferente da classe principal da classe pública People {private string name = null; Pessoas públicas (nome da string) {this.name = name; } String getName () {// permissão de acesso padrão (permissão de acesso ao pacote) Nome de retorno; } void setName (nome da string) {// permissão de acesso padrão (permissão de acesso ao pacote) this.name = name; }}Neste momento, um erro será solicitado na classe principal:
A partir disso, podemos ver que, se a permissão de acesso padrão for usada para modificar os métodos ou variáveis da classe, eles só poderão ser acessados em outras classes do mesmo pacote.
Exemplo 4:
Pessoas.java
pacote com.cxh.test1; public class People {private string name = null; Pessoas públicas (nome da string) {this.name = name; } String protegida getName () {Return Name; } Protected void setName (nome da string) {this.name = name; }}No momento, você pode exibir os métodos de chamada GetName e SetName no Main.
Se a classe People e a classe principal estiverem em diferentes pacotes:
pacote com.cxh.test2; public class People {private string name = null; Pessoas públicas (nome da string) {this.name = name; } String protegida getName () {Return Name; } Protected void setName (nome da string) {this.name = name; }}Um erro será relatado em Main:
Se um homem de classe for especificado em com.cxh.test1 para herdar pessoas, você pode exibir os métodos de chamada GetName e SetName no homem da classe:
pacote com.cxh.test1; importação com.cxh.test2.people; public class Man estende as pessoas {public Man (Nome da String) {super (nome); } public string tostring () {return getName (); }}Aqui estão algum conhecimento sobre pacotes Java e arquivos de classe:
1) Os pacotes em Java são usados principalmente para evitar conflitos de nomeação de arquivos de classe e facilitar a organização e gerenciamento de código;
2) Para um arquivo de código -fonte Java, se houver uma classe pública, só pode haver uma classe pública e o nome do arquivo de código -fonte deve ser exatamente o mesmo que o nome da classe pública. Além disso, se houver outras classes, essas classes serão invisíveis fora do pacote. Se o arquivo de código -fonte não tiver uma classe pública, o nome do arquivo de código -fonte poderá ser nomeado à medida que lhe agrada.
O exposto acima é tudo sobre este artigo, espero que seja útil para o aprendizado de todos.