Classes java

Fermé
Jadorelinfo Messages postés 51 Date d'inscription samedi 24 mai 2014 Statut Membre Dernière intervention 15 avril 2016 - 28 mai 2014 à 16:21
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 28 mai 2014 à 18:53
Bonjour tout le monde,

J'ai une question a propos des classes, comment ça se fait que si par exemple je crée une classe du nom maison, le type sera maison??
Mais ce n'est pas un type de java ça??
A voir également:

3 réponses

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
28 mai 2014 à 17:45
'lut, oui, une
class Maison
devient un type, mais ce n'est, comme tu t'es rendu compte, pas un type natif inclus dans Java.
Une fois déclarée, tu peux t'en servir comme ceci:
Maison maMaison = new Maison();

De même, si tu déclares un Object (dont toutes les classes héritent implicitement)
Object unHabitat;

Et que tu lui attribues une instance d'une
Maison
,
unHabitat = new Maison();

alors tu pourras faire ceci:
unHabitat.getClass().getSimpleName()

qui renverra
"Maison"
, car unHabitat contient un type
Maison
.
0
Jadorelinfo Messages postés 51 Date d'inscription samedi 24 mai 2014 Statut Membre Dernière intervention 15 avril 2016 1
28 mai 2014 à 18:17
merçi pour ta réponse, donc il existe 2 types(au moins) en java: natif et non natif??

il suffit que je crée une classe avec n'importe quelle mot et ça devient automatiquement un type ??
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
Modifié par gravgun le 28/05/2014 à 18:22
Quand je disais "natif", je voulais juste dire qu'il ne venait pas avec Java et son runtime, que c'est une classe que tu as créé de toutes pièces toi-même.
Autrement les types dits vraiment natifs (dits primitifs) sont les types
int
,
long
,
byte
,
short
,
float
,
double
,
boolean
et
char
, qui eux sont spéciaux: ce sont des classes, mais particulières.

"avec n'importe quelle mot": oui, mais il y a des limites: on ne peut pas mettre certains caractères dans le nom, et le nom ne peut pas commencer par un chiffre.
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
28 mai 2014 à 18:51
En fait les 8 types primitifs sont des exceptions, pour les puristes un langage objet ne devrait manipuler que des objets, or ces types primitifs permettent de manipuler des données directement, sans avoir d'appel de méthodes. Tout le reste est objet, tu manipules des références qui sont effectivement typées, chaque objet ayant un type concret (issu du constructeur de la classe), mais pouvant être assigné à des références de plusieurs types "compatibles" (dépendant de la hiérarchie de classe héritées et d'interfaces implémentées par l'objet).

"ce sont des classes, mais particulières. "
Je suis pas vraiment d'accord, car vu que ce ne sont pas des objets on peut difficielement parler de classes derrières. Il y a certes des écritures un peu ambigües comme
int.class
qui feraient penser que ce sont des classes qui n'héritent pas d'Object mais pour moi ce sont juste des facilités d'écritures un peu bâtardes, pour l'introspection notamment.
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
28 mai 2014 à 18:53
Oui je pensais au
int.class
justement, même si je sais que c'est pas vraiment une classe. J'ai juste voulu faire simple.
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
28 mai 2014 à 18:26
Bonjour,

Java, comme tout les langages objets (et un grand nombre d'autres langages) est extensible. Cela signifie que tu peux créer autant de classes que tu veux et les réutiliser comme un nouveau type de données.

Remarque : formellement il n'y a que les classes du package java.lang que l'on peut considérer comme appartenant au langage. En effet l'API standard n'est qu'une spécifications et il peut en exister plusieurs implémentations (Oracle vs OpenJDK par exemple).

Donc toutes les classes que tu importes sont déjà des extensions du langage Java. Et comme Java est fortement typé, à chaque classe correspond un nouveau type (ou presque, il y a aussi les classes abstraites et interfaces qui apportent quelques nuances).
0