Video: Android 101 by Fred Widjaja 2024
Du kan angi tilgang for felt og metoder i Android-appen din. En Java-klasse kan ha enten offentlig tilgang eller ikke-offentlig (standard) tilgang. Men et medlem av en klasse har fire muligheter: offentlig, privat, standard og beskyttet.
En klasses felt og metoder er klassens medlemmer.
Slik fungerer medlemstilgang:
- Et standardmedlem i en klasse (et medlem hvis erklæring ikke inneholder ordene
offentlig
,privat
ellerbeskyttet
) kan brukes av en hvilken som helst kode i samme pakke som den aktuelle klassen. - Et privat medlem av en klasse kan ikke brukes i noen kode utenfor klassen.
- Et offentlig medlem av en klasse kan brukes hvor klassen selv kan brukes; det vil si:
- Ethvert program i en pakke kan referere til et offentlig medlem av en offentlig klasse.
- For et program som refererer til et offentlig medlem av en standard tilgangsklasse, må programmet være inne i samme pakke som klassen.
For å se disse reglene i akt, sjekk ut den offentlige klassen i denne koden.
pakke com. allyourcode. bank;
offentlig klassekonto {
offentlig String customerName;
privat int internIdNumber;
Strengadresse;
String-telefon;
offentlig int socialSecurityNumber;
int accountType;
dobbeltbalanse;
offentlig statisk int findById (int internalIdNumber) {
Konto foundAccount = ny konto ();
// Kode for å finne kontoen går her.
return foundAccount. internalIdNumber;
}
}
Koden bruker klassen
Konto
og dens felter.
La oss se hva som skjer med en annen pakke.
Henvisning til en offentlig klasse i en annen pakke.Feilmeldingene peker på noen problemer med koden. Her er en liste over fakta om disse to kodene:
- The
UseAccoun
t-klassen er i samme pakke som klassenKonto
. - Klassen
UseAccount
kan opprette en variabel av typenKonto
. - Klassen
UseAccount
klassen kan referere til det offentligekundenavn
-feltet i klassenKonto
og til standardverdienadresse
ikonto
klasse. - Klassen
UseAccount
kan ikke henvise til det privateinternalIdNumber
-feltet i klassenKonto
, selv omUseAccount
ogKonto
er i samme pakke. - Klassen
UseAccountFromOutside
er ikke i samme pakke som klassenKonto
. - Klassen
UseAccountFromOutside
kan opprette en variabel av typenKonto
. (Enimport
-deklarasjon holder deg fra å måtte gjenta den fullt kvalifiserteno. Allyourcode. Bank. Konto
navn overalt i koden.) - The
UseAccountFromOutside
Klassens kode kan referere til det offentligekundenavn
-feltet i klassenKonto
. - Klassen
BrukekontoFromOutside
-koden kan ikke henvise til standardadresse
-feltet i klassenKonto
eller til det privateinterneIdNummer
-feltet ikonto
klasse.
Nå undersøke den ikke-offentlige klassen i denne koden.
pakke com. allyourcode. spill;
klasse Sprite {
offentlig Strenge navn;
Strengebilde;
dobbeltavstandFromLeftEdge, avstandFromTop;
dobbelt bevegelseAcross, motionDown;
privat int renderingValue;
}
}
}
Koden bruker
Sprite ()
}
hvis (renderingValue == 2)
klasse og dens felter.
Henvisning til en standard tilgangsklasse i samme pakke.
Henvisning til en standard tilgangsklasse i en annen pakke.
Feilmeldingene i disse bildene peker på noen problemer med koden. Her er en liste over fakta om disse to kodene:Klassen
- UseSprite
er i samme pakke som klassen
Sprite.
Klassen - UseSprite
kan lage en variabel av typen
Sprite.
Klassen - UseSprite
-koden kan referere til det offentlige
navnet-feltet i klassen
Spriteog til standardfeltet
distanceFromTopi
spriteclass.
Klassen - UseSprite
kan ikke referere til det private
renderingValue-feltet i klassen
Sprite, selv om
UseSpriteog
Spriteer i samme pakke.
Klassen - UseSpriteFromOutside
er ikke i samme pakke som klassen
Sprite.
Klassen - UseSpriteFromOutside
kan ikke opprette en variabel av typen
Sprite. (Ikke en
import-deklarasjon kan lagre deg fra en feilmelding her.)
Inne i - UseAccountFromOutside
-kategorien, refererer til
sprite. navn, sprite. distanceFromTopog
sprite. renderingValueer alle meningsløse fordi variabelen
spriteikke har en type.