J'apprends le langage Java par le biais du tuto sur ce site. J'avais déjà fait pas mal de C++ avant et je ne comprend pas un truc sur l'accessibilité en java (public, protected, private).
J'ai 3 classes:
ville capitale (qui hérite de ville) main
mon main est déclarer comme ceci (j'ai laissé par défaut):
public class class1 {
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
dans ma classe ville, j'ai déclarer mes variables comme ceci:
protected int nbHabitants = 0;
protected String nom = "null";
protected String pays = "null";
mon problème: je peux modifier mes variables directement dans le main ! et je ne comprend pas pourquoi ??
// dans le main
maVille.nbHabitants = 5; // fonctionne
maCapitale.nbHabitants = 5; // fonctionne aussi
Merci
PS: en cherchant sur internet, j'ai lu que les variables déclarées protected étaient accessibles aux classes d'un package, mais je ne comprend pas vraiment ce qu'ils veulent dire...
"PS: en cherchant sur internet, j'ai lu que les variables déclarées protected étaient accessibles aux classes d'un package, mais je ne comprend pas vraiment ce qu'ils veulent dire..."
ça veut dire que tu n'ai pas obligé de créer des getters/setters pour avoir accès à tes variables.Car dans le cas d'une variable privée, privée par le fait qu'elle n'est pas accessible aux autres classes, des getters/setters sont obligatoire pour pouvoir y accéder.
Il y a, en plus de public/protected/private, l'accessibilité par défaut appelée "package".
Si je ne me trompe pas, protected inclus "package".
Pour des tests bidons sur d'autres fonctionalités ce genre de visibilité est pratique, mais en réalité on utilise surtout privatepublic et quelques fois protected mais rarement celle par défaut.
Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
"PS: en cherchant sur internet, j'ai lu que les variables déclarées protected étaient accessibles aux classes d'un package, mais je ne comprend pas vraiment ce qu'ils veulent dire..."
ça veut dire que tu n'ai pas obligé de créer des getters/setters pour avoir accès à tes variables.Car dans le cas d'une variable privée, privée par le fait qu'elle n'est pas accessible aux autres classes, des getters/setters sont obligatoire pour pouvoir y accéder.
En fait un package est un ensemble de fonctionnalités.
Comme c'est toi qui développes ces fonctionnalités, tu fais un peu comme tu veux au niveau des visibilités. Par contre les utilisateurs de ces fonctionnalités ne devront pas pouvoir utiliser n'importe comment les choses.
Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
Merci à tous pour vos réponses Effectivement toutes mes classes étaient dans le même package. C'est pour sa que mes variables protected étaient accessibles. J'ai céer un autre package, mis mes classes ville et capitale dedans, et déclarer mes constructeurs en public et... miracle, ça fonctionne ! je n'ai plus accès à mes variable depuis le main (sauf via mes fonctions set/get), c'est ce que je voulais
- Edité par bukibarak 24 novembre 2014 à 10:26:21
J'achète, et je vends...
[débutant] Question sur l'accessibilité
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.