Vídeo: Obtendo Localização Com Location API no Android - Parte 1 2024
Você pode definir o acesso para campos e métodos em seu aplicativo para Android. Uma classe Java pode ter acesso público ou acesso não público (padrão). Mas um membro de uma classe tem quatro possibilidades: público, privado, padrão e protegido.
Os campos e os métodos de uma classe são os membros da classe.
Veja como funciona o acesso do membro:
- Um membro padrão de uma classe (um membro cuja declaração não contém as palavras
public
,privadas
ouprotegidas
) pode ser usado por qualquer código dentro do mesmo pacote que essa classe. - Um membro privado de uma classe não pode ser usado em nenhum código fora da classe.
- Um membro público de uma classe pode ser usado onde quer que a própria classe possa ser usada; isto é:
- Qualquer programa em qualquer pacote pode se referir a um membro público de uma classe pública.
- Para que um programa faça referência a um membro público de uma classe de acesso padrão, o programa deve estar dentro do mesmo pacote que a classe.
Para ver essas regras em ação, confira a classe pública neste código.
pacote com. seu código. banco;
público classe Conta {
public String customerName;
private int internalIdNumber;
Endereço de cadeia;
Telefone de cadeia;
public int socialSecurityNumber;
int accountType;
balanço duplo;
public static int findById (int internalIdNumber) {
Conta encontradaAccount = nova conta ();
// Código para encontrar a conta vai aqui.
retorno encontradoAccount. internalIdNumber;
}
}
O código usa a classe
Conta
e seus campos.
Vamos ver o que acontece com um pacote diferente.
Referindo-se a uma classe pública em um pacote diferente.As mensagens de erro apontam para alguns problemas com o código. Aqui está uma lista de fatos sobre esses dois pedaços de código:
- A classe
UseAccoun
t está no mesmo pacote que a classeConta
. - A classe
UseAccount
pode criar uma variável do tipoConta
. - O código da classe
UseAccount
pode se referir ao campo públiconome do cliente
da categoriaConta
e ao campo padrãoendereço
doConta
classe. - A classe
UseAccount
não pode se referir ao campointernalIdNumber
privado da classeConta
, emboraUseAccount
eConta
estão no mesmo pacote. - A classe
UseAccountFromOutside
não está no mesmo pacote que a classeConta
. - A classe
UseAccountFromOutside
pode criar uma variável do tipoConta
. (Uma declaraçãoimport
evita que você tenha que repetir o nome de usuáriocom todos os requisitos. Banco. Conta
em todos os lugares do código.) - O
UseAccountFromOutside
O código da classe pode se referir ao campo públiconome do cliente
da classeConta
. - O código da classe
UseAccountFromOutside
não pode se referir ao campo padrãoendereço
da classeConta
ou ao campointernalIdNumber
privado doConta
classe.
Agora examine a classe não pública neste código.
pacote com. seu código. jogos;
classe Sprite {
public Nome da cadeia;
Imagem de cadeia;
distância duplaFromLeftEdge, distanceFromTop;
double motionAcross, motionDown;
private int renderingValue;
void render () {
if (renderingValue == 2) {
// Faça coisas aqui
}
}
}
O código usa o
Sprite
classe e seus campos.
Vamos ver o que acontece com um pacote diferente.
Referindo-se a uma classe de acesso padrão em um pacote diferente.As mensagens de erro nessas imagens apontam para alguns problemas com o código. Aqui está uma lista de fatos sobre esses dois pedaços de código:
- A classe
UseSprite
está no mesmo pacote que a classeSprite
. - A classe
UseSprite
pode criar uma variável do tipoSprite
. - O código da classe
UseSprite
pode se referir ao campo públiconome
da classeSprite
e ao campo padrãodistanceFromTop
doSprite
classe. - A classe
UseSprite
não pode se referir ao camporenderingValue
privado da classeSprite
, emboraUseSprite
eSprite
estão no mesmo pacote. - A classe
UseSpriteFromOutside
não está no mesmo pacote que a classeSprite
. - A classe
UseSpriteFromOutside
não pode criar uma variável do tipoSprite
. (Nem mesmo uma declaraçãoimport
pode salvá-lo de uma mensagem de erro aqui.) - Dentro da classe
UseAccountFromOutside
, referências asprite. nome, sprite. distanceFromTop
esprite. renderingValue
são sem sentido porque a variávelsprite
não possui um tipo.