Je suis un débutant à Java, mais un peu familier à C. Je voulais savoir - quelles différences existe-t-il entre les structures C et les objets Java et invoquant leurs méthodes? Ou sont l'équivalent totalement équivalent?
Par exemple, la structure de vélo: p> La raison pour laquelle je demande est parce qu'ils ont l'air si semblable! Merci! P> p>
4 Réponses :
C code> struct ne peut pas avoir de méthodes / fonctions dedans. Ce n'est qu'une collection de types de données différents. classe code> peut avoir à la fois des variables et des méthodes déclarées. P>
De plus, une structure ne peut pas hériter d'une autre structure.
@Chris - Bon point. C code> n'a aucun concept d'héritage cependant. Vous auriez dû le poster comme une réponse à la place.
Les différences clés, IMHO sont que les classes permettent p>
Ce sont deux caractéristiques très importantes de OOP. p>
Vous avez oublié le plus important: héritage ( en.wikipedia.org/wiki/Inheritance_ ( objet-orienté_programm ing) )
Si vous laissez la méthode sur la photo de l'image, vous pouvez penser aux classes et méthodes Java en tant que paire d'un struct code> et d'un ensemble de fonctions qui fonctionnent sur ces struct code> s. Par exemple, si vous avez une classe comme celle-ci: myJavaClass->vtable->getX(myJavaClass);
Une classe Java vous permet de définir des champs, comme une structure C, mais dispose des caractéristiques supplémentaires suivantes: P>
privé code> (et quelques autres paramètres d'accès), ce qui signifie que seules d'autres méthodes de la classe peuvent y accéder, pas de code de l'extérieur. (Il ne serait pas de sens d'avoir ceci sur les structures, car il n'y aurait aucun moyen d'accéder aux champs privés - cela n'a de sens que lorsque vous autorisez des méthodes). Li>
- Les classes peuvent hériter d'autres classes. Entre autres choses, cela vous permet de passer un objet de type B où un type A était attendu, tant que B hérite d'un. Li>
ul>
Il y a une autre différence subtile. Dans C, les structures sont types de valeur em> mais en Java, les classes sont types de référence em>. Cela signifie que lorsque vous copiez une structure en C (telle que l'attribution à une variable ou en passant comme un argument), il obtient tous ses champs copiés, alors que dans Java, lorsque vous copiez un objet de classe, il suffit de copie la référence em> à l'objet (donc si vous modifiez ses champs, vous modifiez également l'objet d'origine, pas seulement la copie). P>
en C, vous utilisez souvent pointeurs sur em> les structures pour imiter le comportement de référence de Java. En Java, vous n'utilisez pas de pointeurs car les objets de classe sont déjà des références. P>