OVH Cloud OVH Cloud

Petite question bête...

5 réponses
Avatar
Thibaut Desmarest
Bonjour à tous,

j'ai juste une petite question qui ne devrait pas rebuter les javaistes
chevronnés que vous êtes : (^^)

J'ai cherché un peu sur le net avat de poster, mais je n'ai trouvé que
des infos sur les classes internes, les classes anonymes etc...

Moi ce que je voudrais savoir, c'est quand on définit une classe dans le
même fichier mais en dehors de toute autre classe, comme ça:

fichier ClasseA.java


public ClasseA extends... {

//code de la classe

}

class ClasseB implements... {

//code de la classe

}

class ClasseC {

//code de la classe

}

Que sont ClasseB et ClasseC exactement ? Quelle est leur visibilité et
quelles sont leur particularité ? Quand est t'il judicieux d'utiliser de
telles classes ?


Merci d'avance,

5 réponses

Avatar
Isammoc
fichier ClasseA.java

public ClasseA extends... {
//code de la classe
}

class ClasseB implements... {
//code de la classe
}

class ClasseC {
//code de la classe
}

Que sont ClasseB et ClasseC exactement ? Quelle est leur visibilité et
quelles sont leur particularité ? Quand est t'il judicieux d'utiliser de
telles classes ?


AMHA:
ce sont des classes uniquement visibles depuis la ClasseA et qui ne peuvent
donc pas être appelées par ClasseA.ClasseB si ClasseB était une classe
interne de ClasseA.

Cela reste cependant mon avis.

--
Isammoc

Avatar
Olivier Thomann
Que sont ClasseB et ClasseC exactement ? Quelle est leur visibilité et
quelles sont leur particularité ? Quand est t'il judicieux d'utiliser de
telles classes ?
Ce sont des classes au même titre que la classe ClasseA. Le seul

problème est qu'on compilateur aura du mal à les utiliser en compilant
depuis le source ailleurs que dans ce fichier parce qu'il va chercher un
fichier ClasseB.java et ClasseC.java.

Un bon conseil. Ne définit jamais plus d'une classe par fichier si
jamais tu veux les utiliser ailleurs.
--
Olivier

Avatar
Vincent Cantin
AMHA : ce sont des classes visibles a partir des autres classes et fichiers,
mais du meme package.
Avatar
Frédéric Lachasse
"Thibaut Desmarest" wrote in message
news:co2a43$1u37$
Bonjour à tous,

j'ai juste une petite question qui ne devrait pas rebuter les javaistes
chevronnés que vous êtes : (^^)

J'ai cherché un peu sur le net avat de poster, mais je n'ai trouvé que des
infos sur les classes internes, les classes anonymes etc...

Moi ce que je voudrais savoir, c'est quand on définit une classe dans le
même fichier mais en dehors de toute autre classe, comme ça:

fichier ClasseA.java


public ClasseA extends... {

//code de la classe

}

class ClasseB implements... {

//code de la classe

}

class ClasseC {

//code de la classe

}

Que sont ClasseB et ClasseC exactement ?


Des classes comme ClasseA. En fait, le compilateur va génerer ClasseB.class
et ClasseC.class en même temps que ClassA.class, comme si ClasseB et ClasseC
étaient définies dans des fichiers séparés ClasseB.java et ClasseC.java

Quelle est leur visibilité et quelles sont leur particularité ?


Aucune particularité. Cut & Paste dans des fichiers séparés et le résultat
sera le même (dans ce cas, visibilité "package" car ni "public" ni
"private").

Quand est t'il judicieux d'utiliser de telles classes ?


A mon avis, jamais. Le principal problème est que les débuggeurs (et autres
outils) vont toujours associer un .class avec un .java de même nom, donc
quand ils vont exécuter le code dans ClasseB ou ClasseC, ils chercheront le
source dans ClasseB.java ou ClasseC.java et non ClasseA.java, et donc ne
pourront pas montrer la ligne de programme en cours d'exécution.

--
Frédéric Lachasse - ECP86

Avatar
vc.spam
Thibaut Desmarest wrote in message news:<co2a43$1u37$...
Bonjour à tous,

j'ai juste une petite question qui ne devrait pas rebuter les javaistes
chevronnés que vous êtes : (^^)

J'ai cherché un peu sur le net avat de poster, mais je n'ai trouvé que
des infos sur les classes internes, les classes anonymes etc...

Moi ce que je voudrais savoir, c'est quand on définit une classe dans le
même fichier mais en dehors de toute autre classe, comme ça:


Que sont ClasseB et ClasseC exactement ? Quelle est leur visibilité et
quelles sont leur particularité ? Quand est t'il judicieux d'utiliser de
telles classes ?



Bonjour,

Ce sont des classes qui se comportent exactement comme des classes de
visibilité "package" qui seraient dans leur propre fichier et dans le
même package.

Avantages? Pratiquement aucun. Perso je m'en sers juste temporairement
quand je réorganise du code, par exemple quand je morcelle une classe
qui à un peu trop gonflé au fur et à mesure de l'évolution des
specs... Une fois que c'est fait, je les met dans leur propre fichier.

Inconvénients? Pénible pour retrouver la classe, pénible pour suivre
le debuggeer (quand il fonctionne)... Bref, tout ce qu'il y a de
pénible avec un fichier fourre-tout...

+

Vincent