Video: Android 101 by Fred Widjaja 2024
Du kan ange åtkomst för fält och metoder i din Android-app. En Java-klass kan ha antingen allmän åtkomst eller icke-offentlig (standard) åtkomst. Men en medlem i en klass har fyra möjligheter: offentlig, privat, standard och skyddad.
En klasss fält och metoder är klassens medlemmar.
Så här fungerar medlemstillträde:
- En standardmedlem i en klass (en medlem vars deklaration inte innehåller orden
offentlig
,privat
ellerskyddad
) kan användas av någon kod i samma paket som den klassen. - En privat medlem i en klass kan inte användas i någon kod utanför klassen.
- En allmän medlem i en klass kan användas varhelst klassen själv kan användas. det vill säga:
- Alla program i vilket paket som helst kan referera till en allmän medlem i en offentlig klass.
- För ett program som refererar till en allmän medlem av en standardåtkomstklass måste programmet vara inuti samma paket som klassen.
För att se dessa regler i åtgärd, kolla in den offentliga klassen i den här koden.
paket com. allyourcode. Bank;
offentliga klasskonto {
offentliga String customerName;
privat int internIdNumber;
Strängadress;
String-telefon;
offentliga int socialSecurityNumber;
int kontoType;
dubbelbalans;
public static int findById (int internalIdNumber) {
Konto foundAccount = nytt konto ();
// Kod för att hitta kontot går här.
returnera foundAccount. internalIdNumber;
}
}
Koden använder klassen
Konto
och dess fält.
Låt oss se vad som händer med ett annat paket.
Med hänvisning till en offentlig klass i ett annat paket.Felmeddelandena pekar på några problem med koden. Här är en lista över fakta om dessa två kodstycken:
-
UseAccoun
t-klassen finns i samma paket som klassenKonto
. - Klassen
UseAccount
kan skapa en variabel av typenKonto
. - Klassen
UseAccount
kan hänvisa till det offentliga fältetkundnamn
i klassenKonto
och till standardfältetadress
ikonto
klassen. - Klassen
UseAccount
kan inte referera till det privatainternalIdNumber
-fältet i klassenKonto
, trots attAnvändAccount
ochKonto
finns i samma paket. - Klassen
UseAccountFromOutside
finns inte i samma paket som klassenKonto
. - Klassen
UseAccountFromOutside
kan skapa en variabel av typenKonto
. (Enimport
-deklaration hindrar dig från att behöva upprepa det fullständigt kvalificeradecom.allyourcode. Bank. Konto
namn överallt i koden.) - The
UseAccountFromOutside
klassens kod kan referera till det offentligakundnamn
fältet i klassenKonto
. - Klassen
UseAccountFromOutside
klassens kod kan inte referera till fältetadress
i klassenKonto
eller till det privatainternalIdNumber
fältet ikonto
klassen.
Kontrollera nu den icke-offentliga klassen i den här koden.
paket com. allyourcode. spel;
klass Sprite {
public strängnamn;
Strängbild;
dubbelavståndFromLeftEdge, avståndFromTop;
dubbelrörelseAcross, motionDown;
privat int renderingValue;
void render () {
om (renderingValue == 2) {
// Gör saker här
}
}
}
Koden använder
Sprite
klass och dess fält.
Låt oss se vad som händer med ett annat paket.
Med hänvisning till en standardåtkomstklass i en annan paket.Felmeddelandena i dessa bilder pekar på några problem med koden. Här är en lista över fakta om dessa två kodstycken:
- Klassen
UseSprite
finns i samma paket som klassenSprite
. - Klassen
UseSprite
kan skapa en variabel av typenSprite
. - Klassen
UseSprite
kan hänvisa till det allmänna fältetnamn
i klassenSprite
och till standardfältetdistanceFromTop
Sprite
klassen. - Klassen
UseSprite
kan inte referera till det privatarenderingValue
-fältet i klassenSprite
, trots attUseSprite
ochSprite
finns i samma paket. - Klassen
UseSpriteFromOutside
finns inte i samma paket som klassenSprite
. - Klassen
UseSpriteFromOutside
kan inte skapa en variabel av typenSprite
. (Inte ens enimport
deklaration kan spara dig från ett felmeddelande här.) - Inne i klassen
UseAccountFromOutside
hänvisas tillsprite. namn, sprite. distanceFromTop
ochsprite. renderingValue
är meningslösa eftersom variabelnsprite
inte har någon typ.