Java Access Modifier (Access Controller)
O Java controla os direitos de acesso e outras funções de classes, propriedades e métodos por meio de modificadores, geralmente colocados na extremidade frontal de uma declaração. Por exemplo:
classe pública classe classe nome {// corpo da classe} private boolean myflag; estático final duplo semanas = 9,5; lwidth de caixa final estática protegida Int = 42; public satic void main (string [] argumentos) {// corpo do método}Existem muitos modificadores em Java, divididos em modificadores de acesso e modificadores que não são de acesso. Esta seção apresenta apenas modificadores de acesso e modificadores que não são de acesso serão introduzidos posteriormente.
Os modificadores de acesso, também conhecidos como caracteres de controle de acesso, consulte as palavras -chave que podem controlar os direitos de uso das classes, variáveis de membros e métodos.
Os controladores de acesso são um conceito importante na programação orientada a objetos e podem ser usados para proteger o acesso a classes, variáveis, métodos e construtores.
O Java suporta quatro permissões de acesso diferentes:
Público: Público
Classes, métodos, construtores e interfaces declarados como públicos podem ser acessados por qualquer outra classe.
Se várias classes públicas acessadas entre si forem distribuídas em pacotes não utilizados, você precisará importar o pacote onde a classe pública correspondente está localizada. Devido à herança da classe, todos os métodos públicos e variáveis da classe podem ser herdados por suas subclasses.
O método a seguir usa controle de acesso público:
public static void main (string [] argumentos) {// Body of Method} O método principal () de um programa Java deve ser definido como público; caso contrário, o intérprete Java não poderá executar a classe.
Protegido: protegido
Variáveis, métodos e construtores declarados como protegidos podem ser acessados por qualquer outra classe no mesmo pacote ou por subclasses em diferentes pacotes.
O modificador de acesso protegido não pode modificar classes e interfaces.
As subclasses podem acessar métodos e variáveis declaradas pelos modificadores protegidos, para que possam proteger classes não relacionadas do uso desses métodos e variáveis.
A classe pai seguinte usa o modificador de acesso protegido e a subclasse sobrecarrega o método Bark () da classe pai.
public class Dog {Protected void Bark () {System.out.println ("Uau, não venha"); , Estou com muito medo, não me siga ");}} Se o método Bark () for declarado como privado, outras classes além do cachorro não poderão acessar o método. Se Bark () for declarado público, todas as classes poderão acessar o método. Se queremos que o método seja visível apenas para uma subclasse da classe em que está localizada, declare o método como protegido.
Privado: Privado
Os modificadores de acesso privado são o nível de acesso mais estrito; portanto, métodos, variáveis e construtores declarados como privados só podem ser acessados pela classe a que pertencem, e as classes e interfaces não podem ser declaradas como privadas.
As variáveis declaradas como tipo de acesso privado só podem ser acessadas por classes externas através dos métodos públicos de getter/setter na classe.
O uso do modificador de acesso privado é usado principalmente para ocultar os detalhes da implementação da classe e proteger os dados da classe.
A aula a seguir usa um modificador de acesso privado:
Public Dog {Nome de String Private; (Int Age) {this.age = Age;}}No exemplo, as variáveis de nome e idade na classe de cães são variáveis privadas, para que outras classes não possam obter diretamente e definir o valor da variável. Para permitir que outras classes manipulem a variável, são definidos dois pares de métodos públicos, getName ()/setName () e getage ()/setage (), que são usados para obter e definir os valores de variáveis privadas.
Esta é uma palavra -chave no Java.
Os métodos de definição para acessar variáveis privadas em uma classe são habituais para nomear assim: prefixo "get" ou "set" no nome da variável e capitalize a letra inicial da variável. Por exemplo, o método para obter o nome da variável privada é getName (), e o método para definir o nome é setName (). Esses métodos são frequentemente usados e têm nomes específicos, chamados métodos Getter e Setter.
Padrão: nenhuma palavra -chave é usada
Nenhum modificador declarou propriedades e métodos é visível para as classes dentro do mesmo pacote. Todas as variáveis na interface são declaradas implicitamente como final estático público, enquanto os métodos na interface são públicos por padrão.
Como mostrado no exemplo a seguir, a definição de classes, variáveis e métodos não usa nenhum modificador:
CLASSE {Nome da String; Mestre, estou com fome ");}}Controle de acesso e herança
Observe as seguintes regras para herança (os leitores que não entendem o conceito de herança podem pular aqui ou clicar na herança java e visualização polimórfica):
Os métodos declarados como públicos na classe dos pais também devem ser públicos na classe infantil.
Os métodos declarados como protegidos na classe pai são declarados como protegidos ou públicos na classe infantil. Não pode ser declarado como privado.
Os métodos declarados por modificadores padrão na classe pai podem ser declarados como privados em subclasses.
Os métodos declarados como privados na classe pai não podem ser herdados.
Como usar caracteres de controle de acesso
Os caracteres de controle de acesso nos permitem controlar facilmente as permissões do código:
Quando você precisa fazer da aula que escreve acesso a todas as outras classes, pode declarar o controle de acesso da classe como público.
Quando você precisa tornar sua classe acessível apenas pelas classes em seu próprio pacote, o caractere de controle de acesso pode ser omitido.
Quando é necessário controlar os dados do membro em uma classe, os caracteres de controle de acesso a dados de dados nesta classe podem ser definidos como público, protegido ou omitido.
Escopo das variáveis Java <Br /> Em Java, o escopo das variáveis é dividido em quatro níveis: nível de classe, nível de instância do objeto, nível de método e nível de bloco.
As variáveis de nível de classe também são chamadas de variáveis globais ou variáveis estáticas. As variáveis de nível de classe já existem após a definição da classe, Occupy Memory Space, podem ser acessadas por meio de nomes de classe e não precisam ser instanciadas.
Uma variável no nível da instância do objeto é uma variável de membro.
As variáveis no nível do método são variáveis definidas nos métodos, que são variáveis locais.
As variáveis de nível de bloco são variáveis definidas em um bloco. Os blocos se referem ao código cercado por aparelhos, por exemplo:
{Int Age = 3; Erro, a idade e o nome variáveis System.out.println (nome + "já" + idade + "anos"); ilustrar:
Além de acessar variáveis no nível do método, os métodos também podem acessar variáveis no nível da classe e no nível da instância.
Variáveis de nível de classe e no nível da instância podem ser acessadas dentro de um bloco.
As variáveis de método e nível de bloco devem ser exibidas inicializadas, caso contrário, não podem ser acessadas.
Código de demonstração:
classe pública demonstração {public static string = "weixueyuan"; test1 () {int j = 3; Somente podem acessar o System.out.println ("name =" + name + ", i =" + i + ", j =" + j);} public static void main (string [] args) {// não Criar um objeto, acesse a variável de nível de classe System.out.println (Demo.name); // Crie um objeto e acesse o método de demonstração t = new Demo (); T.Test1 ();}} Resultados em execução:
Nome da Micro Academia = Micro Academia, I = 0, J = 3