Video: Android 101 by Fred Widjaja 2024
U kunt toegang instellen voor velden en methoden in uw Android-app. Een Java-klasse kan openbare toegang hebben of niet-openbare (standaard) toegang. Maar een lid van een klas heeft vier mogelijkheden: openbaar, privé, standaard en beschermd.
De velden en methoden van een klasse zijn de leden van de klasse.
Zo werkt ledentoegang:
- Een standaardlid van een klasse (een lid wiens verklaring niet de woorden
public
,private
ofprotected bevat
) kan worden gebruikt door elke code in hetzelfde pakket als die klasse. - Een privélid van een klasse kan niet worden gebruikt in een code buiten de klas.
- Een openbaar lid van een klasse kan overal worden gebruikt waar de klasse zelf kan worden gebruikt; dat wil zeggen:
- Elk programma in een pakket kan verwijzen naar een publiek lid van een openbare klasse.
- Voor een programma dat verwijst naar een openbaar lid van een standaardtoegangsklasse, moet het programma zich in hetzelfde pakket als de klas bevinden.
Om deze regels in actie te zien, bekijk de publieke klasse in deze code.
pakket com. allyourcode. bank;
openbare class Account {
public String customerName;
privé int internalIdNumber;
String-adres;
String-telefoon;
openbaar int socialSecurityNumber;
int accountType;
dubbele balans;
public static int findById (int internalIdNumber) {
Account gevonden Account = nieuwe account ();
// Code om het account te vinden, komt hier.
rendement gevondenAccount. internalIdNumber;
}
}
De code gebruikt de klasse
Account
en de bijbehorende velden.
Laten we eens kijken wat er gebeurt met een ander pakket.
Verwijzen naar een openbare klasse in een ander pakket.De foutmeldingen wijzen op enkele problemen met de code. Hier is een lijst met feiten over deze twee stukjes code:
- De
UseAccoun
t-klasse bevindt zich in hetzelfde pakket als deAccount
-klasse. - De
UseAccount
-klasse kan een variabele van het typeAccount
maken. - De code
UseAccount
kan verwijzen naar het openbareklantnaam
-veld van deaccount
-klasse en naar het standaard-adres
van deaccount
class. - De
UseAccount
-klasse kan niet verwijzen naar het privateinternalIdNumber
-veld van deAccount
-klasse, hoewelUseAccount
en - De klasse
UseAccountFromOutside
bevindt zich niet in hetzelfde pakket als de klasseAccount
. - De
UseAccountFromOutside
-klasse kan een variabele van het typeAccount
maken. (Eenimport
-verklaring voorkomt dat u de volledig gekwalificeerdecom. Allyourcode. Bank. Account
overal in de code moet herhalen.) - De
UseAccountFromOutside
class-code kan verwijzen naar het openbare veldklantnaam
van de klasseAccount
. - De code
UseAccountFromOutside
kan niet verwijzen naar het standaardadres
van de klasseAccount
of naar het privateinternalIdNumber
-veld van deaccount
class.
Bekijk nu de niet-openbare klasse in deze code.
pakket com. allyourcode. spel;
klasse Sprite {
public String naam;
Stringafbeelding;
double distanceFromLeftEdge, distanceFromTop;
dubbele bewegingAcross, motionDown;
privé int renderingValue;
void render () {
if (renderingValue == 2) {
// Dingen hier doen
}
}
}
De code gebruikt de
Sprite
klasse en de bijbehorende velden.
Laten we eens kijken wat er gebeurt met een ander pakket.
Verwijzen naar een standaardtoegangsklasse in een ander pakket.De foutmeldingen in deze afbeeldingen wijzen op enkele problemen met de code. Hier is een lijst met feiten over deze twee stukjes code:
- De klasse
UseSprite
bevindt zich in hetzelfde pakket als de klasseSprite
. - De
UseSprite
-klasse kan een variabele van het typeSprite
maken. - De
UseSprite
-klassecode kan verwijzen naar het openbarenaam
-veld van deSprite
-klasse en naar het standaarddistanceFromTop
-veld van deSprite
class. - De
UseSprite
-klasse kan niet verwijzen naar het privaterenderValue
-veld van deSprite
-klasse, ook alUseSprite
enSprite
zitten in hetzelfde pakket. - De klasse
UseSpriteFromOutside
bevindt zich niet in hetzelfde pakket als de klasseSprite
. - De
UseSpriteFromOutside
-klasse kan geen variabele van het typeSprite
maken. (Zelfs eenimport
-verklaring kan hier geen foutbericht bevatten.) - In de
UseAccountFromOutside
-klasse verwijzingen naarsprite. naam, sprite. distanceFromTop
ensprite. renderValue
zijn allemaal zinloos omdat desprite
-variabele geen type heeft.