Vidéo: Créez votre propre classe dans java 2024
Vous pouvez définir l'accès aux champs et aux méthodes de votre application Android. Une classe Java peut avoir un accès public ou un accès non public (par défaut). Mais un membre d'une classe a quatre possibilités: public, privé, par défaut et protégé.
Les champs et les méthodes d'une classe sont les membres de la classe.
Voici comment fonctionne l'accès aux membres:
- Un membre par défaut d'une classe (un membre dont la déclaration ne contient pas les mots
public
,privé
ouprotégé
) peut être utilisé par n'importe quel code dans le même paquet que cette classe. - Un membre privé d'une classe ne peut être utilisé dans aucun code en dehors de la classe.
- Un membre public d'une classe peut être utilisé partout où la classe elle-même peut être utilisée; c'est-à-dire:
- Tout programme d'un package peut faire référence à un membre public d'une classe publique.
- Pour qu'un programme référence un membre public d'une classe d'accès par défaut, le programme doit se trouver dans le même package que la classe.
Pour voir ces règles en action, consultez la classe publique dans ce code.
package com. allyourcode. banque;
public class Account {
public Chaîne customerName;
private int internalIdNumber;
Adresse de chaîne;
Téléphone à cordes;
public int socialSecurityNumber;
int accountType;
double balance;
public statique int findById (int internalIdNumber) {
Compte foundAccount = new Compte ();
// Code pour trouver le compte va ici.
return foundAccount. internalIdNumber;
}
}
Le code utilise la classe
Account
et ses champs.
Voyons ce qui se passe avec un paquet différent.
Se référant à une classe publique dans un package différent.Les messages d'erreur indiquent des problèmes avec le code. Voici une liste de faits concernant ces deux morceaux de code:
- La classe
UseAccoun
t est dans le même paquet que la classeAccount
. - La classe
UseAccount
peut créer une variable de typeCompte
. - Le code de la classe
UseAccount
peut se référer au champ publiccustomerName
de la classeAccount
et au champaddress
par défaut duCompte
classe. - La classe
UseAccount
ne peut pas faire référence au champinternalIdNumber
privé de la classeAccount
, même siUseAccount
etAccount
sont dans le même paquet. - La classe
UseAccountFromOutside
ne figure pas dans le même package que la classeAccount
. - La classe
UseAccountFromOutside
peut créer une variable de typeAccount
. (Une déclarationimport
vous évite d'avoir à répéter le nom completcom.allyourcode.banque.Compte
partout dans le code.) - Le
UseAccountFromOutside
Le code de la classe peut faire référence au champ publiccustomerName
de la classeAccount
. - Le code de la classe
UseAccountFromOutside
ne peut pas faire référence au champadresse
par défaut de la classeAccount
ou au champinternalIdNumber
duCompte
classe.
Examinez maintenant la classe non publique dans ce code.
package com. allyourcode. Jeu;
class Sprite {
public Nom de la chaîne;
Image de chaîne;
double distanceFromLeftEdge, distanceFromTop;
double mouvementAcross, motionDown;
private int renderingValue;
void render () {
if (renderingValue == 2) {
// Faire des choses ici
}
}
}
Le code utilise le
Sprite
classe et ses champs.
Voyons ce qui se passe avec un paquet différent.
Référence à une classe d'accès par défaut dans un package différent.Les messages d'erreur dans ces images indiquent des problèmes avec le code. Voici une liste de faits sur ces deux parties de code:
- La classe
UseSprite
est dans le même paquet que la classeSprite
. - La classe
UseSprite
peut créer une variable de typeSprite
. - Le code de la classe
UseSprite
peut se référer au champ publicname
de la classeSprite
et au champ par défautdistanceFromTop
duSprite
classe. - La classe
UseSprite
ne peut pas faire référence au champ privérenderingValue
de la classeSprite
, même siUseSprite
etSprite
sont dans le même paquet. - La classe
UseSpriteFromOutside
n'est pas dans le même paquet que la classeSprite
. - La classe
UseSpriteFromOutside
ne peut pas créer une variable de typeSprite
. (Même une déclarationimport
ne peut vous sauver d'un message d'erreur ici.) - Dans la classe
UseAccountFromOutside
, référence à l'image-objet. nom, sprite. sprite distanceDe
et. renderingValue
sont vides de sens car la variablesprite
n'a pas de type.