J'écris habituellement en C ++, mais pour une raison quelconque, j'ai soudainement décidé d'écrire Java. Alors, j'écrirai une simple comparaison si vous avez des impressions. (Je l'ai écrit avec un sentiment beaucoup plus approprié que d'autres articles ...)
D'abord, de la même partie. Les deux langues
for (int i = 0; i < size; ++i) {
a[i] = i;
}
Peut être utilisé!
type | C++ | Java |
---|---|---|
logique | bool | boolean |
lettre | char | char |
entier | (signed) short, int, long, long long | byte, short, int, long |
Nombre à virgule flottante | float, double, long double | float, double |
«Fondamentalement, il y a beaucoup de choses similaires.
Ceux listés ici sont appelés types de données de base, types primitifs, etc. en Java. De nombreuses autres classes sont créées, mais il existe des différences majeures entre C ++ et Java. Si le nom du type est Test
C++ | Java (type de données de base) | Java (autres classes) |
---|---|---|
Test test; |
Test test; |
Aucun |
Test* test; ,Test& test; |
Aucun | Test test; |
C'est comme ressentir. En Java, tout ce qui n'est pas un type de données de base est un type de référence qui a une adresse à l'intérieur. Les membres sont accessibles sous la forme
test.member```, mais peuvent être remplacés contrairement aux références C ++, ou par de nouveaux comme`` Test test = new Test (); ``
. Il a également des caractéristiques de type pointeur telles que l'initialisation.
À propos, Java a une spécification pratique que si vous le laissez seul sans delete
, il sera supprimé automatiquement (est-ce qu'il compte le nombre de références comme shared_ptr?).
Avec C ++
class Test {
private:
double _val;
public:
Test(double val) : _val(val) {}
double get() const { return _val; }
void set(double val) { _val = val; }
};
Ce qui est écrit est Java
public class Test {
private double _val;
Test(double val) {
_val = val;
}
public double get() {
return _val;
}
public void set(double val) {
_val = val;
}
}
// ;Je n'ai pas besoin
Ce sera. En gros, vous pouvez créer un cours avec des sentiments similaires. Cependant, en C ++, la classe est uniquement à l'état public, mais en Java, vous pouvez choisir plusieurs types. Ecrivez également privé / public des variables / fonctions membres pour chaque membre. Et il est significatif de ne pas écrire la spécification d'accès. En outre, le sens de protégé est différent. Les spécifications d'accès des membres de la classe sont les suivantes.
La désignation | Signification en Java | C++Signification dans |
---|---|---|
private | Seulement à l'intérieur de la classe | Seulement à l'intérieur de la classe |
Aucun | Seulement dans le même emballage | Identique à privé |
protected | Au sein du même package ou d'une sous-classe | Depuis une classe ou une classe dérivée |
public | De partout | De partout |
Le package est similaire à l'espace de noms C ++, mais je pense que c'est une grande différence par rapport au C ++ en ce sens qu'il est créé à l'aide de la structure de répertoires.
Héritage en C ++
class Derived : public Base {
(members)
};
Mais avec Java
public class Derived extends Base {
(members)
}
est. Il n'y a pas de spécification d'accès aux classes de base, écrivez simplement ʻextends Base. Les membres peuvent être remplacés sans spécifier «virtuel». Utilisez
final` pour l'empêcher.
En plus du simple héritage, il existe également une interface,
interface Base {
void func();
}
class Impl implements Base {
void func() {
// implementation
}
}
Écrivez comme ça. Il ressemble à une classe abstraite C ++. De plus, les variables de classe (sous-classe) dérivées Java peuvent être normalement affectées à des variables de classe de base, et les fonctions surchargées du côté de la classe dérivée peuvent être appelées à partir de variables de classe de base (comme pour la référence C ++).
Bien qu'il existe diverses différences comme celle-ci, la programmation de base orientée objet peut être effectuée en Java tel quel. C'était amusant d'écrire un programme normalement simplement en achetant un livre de référence.
Recommended Posts