Normalerweise schreibe ich C ++, aber aus irgendeinem Grund habe ich mich plötzlich entschieden, Java zu schreiben. Also werde ich einen einfachen Vergleich schreiben, wenn Sie irgendwelche Eindrücke haben. (Ich habe es mit einem viel passenderen Gefühl geschrieben als andere Artikel ...)
Erstens aus dem gleichen Teil. Beide Sprachen
for (int i = 0; i < size; ++i) {
a[i] = i;
}
Kann verwendet werden!
Art | C++ | Java |
---|---|---|
Logik | bool | boolean |
Brief | char | char |
ganze Zahl | (signed) short, int, long, long long | byte, short, int, long |
Gleitkommazahl | float, double, long double | float, double |
―― Grundsätzlich gibt es viele ähnliche Dinge.
Die hier aufgeführten werden in Java als grundlegende Datentypen, primitive Typen usw. bezeichnet. Es gibt viele andere Dinge, die als Klassen erstellt werden, aber es gibt große Unterschiede zwischen C ++ und Java. Wenn der Typname Test ist
C++ | Java (Basisdatentyp) | Java (andere Klassen) |
---|---|---|
Test test; |
Test test; |
Keiner |
Test* test; ,Test& test; |
Keiner | Test test; |
Es fühlt sich an wie. In Java ist alles, was kein Basisdatentyp ist, ein Referenztyp, in dem sich eine Adresse befindet. Auf Mitglieder wird in der Form `test.member``` zugegriffen, sie können jedoch im Gegensatz zu C ++ - Referenzen oder durch neue wie` `Test test = new Test ();`
ersetzt werden. Es hat auch zeigerähnliche Eigenschaften wie die Initialisierung.
Übrigens hat Java eine praktische Spezifikation: Wenn Sie es ohne "Löschen" in Ruhe lassen, wird es automatisch gelöscht (Zählt es die Anzahl der Referenzen wie shared_ptr?).
Mit C ++
class Test {
private:
double _val;
public:
Test(double val) : _val(val) {}
double get() const { return _val; }
void set(double val) { _val = val; }
};
Was geschrieben steht, ist Java
public class Test {
private double _val;
Test(double val) {
_val = val;
}
public double get() {
return _val;
}
public void set(double val) {
_val = val;
}
}
// ;Ich brauche nicht
Es wird sein. Grundsätzlich können Sie eine Klasse mit ähnlichen Gefühlen machen. In C ++ befindet sich die Klasse jedoch nur im öffentlichen Status. In Java können Sie jedoch mehrere Typen auswählen. Schreiben Sie außerdem privat / öffentlich von Mitgliedsvariablen / -funktionen für jedes Mitglied. Und es ist sinnvoll, die Zugriffsspezifikation nicht zu schreiben. Auch die Bedeutung von geschützt ist unterschiedlich. Die Zugriffsspezifikationen der Mitglieder in der Klasse lauten wie folgt.
Bezeichnung | Bedeutung in Java | C++Bedeutung in |
---|---|---|
private | Nur aus der Klasse heraus | Nur aus der Klasse heraus |
Keiner | Nur im selben Paket | Gleich wie privat |
protected | Innerhalb desselben Pakets oder aus einer Unterklasse | Aus einer Klasse oder einer abgeleiteten Klasse heraus |
public | Von überall | Von überall |
Das Paket ähnelt dem C ++ - Namespace, aber ich denke, es ist ein großer Unterschied zu C ++, da es mithilfe der Verzeichnisstruktur erstellt wird.
Vererbung in C ++
class Derived : public Base {
(members)
};
Aber mit Java
public class Derived extends Base {
(members)
}
ist. Es gibt keine Zugriffsspezifikation für die Basisklasse. Schreiben Sie einfach "Erweitert die Basis". Mitglieder können überschrieben werden, ohne "virtuell" anzugeben. Verwenden Sie "final", um dies zu verhindern. Neben der bloßen Vererbung gibt es auch eine Schnittstelle,
interface Base {
void func();
}
class Impl implements Base {
void func() {
// implementation
}
}
Schreiben Sie so. Es sieht einer abstrakten C ++ - Klasse ähnlich. Darüber hinaus können von Java abgeleitete Klassenvariablen (Unterklassenvariablen) normalerweise Basisklassenvariablen zugewiesen werden, und Funktionen, die auf der Seite der abgeleiteten Klasse überladen sind, können von Basisklassenvariablen aufgerufen werden (wie C ++ - Referenz).
Obwohl es verschiedene Unterschiede gibt, könnte die grundlegende objektorientierte Programmierung in Java so wie sie ist durchgeführt werden. Es hat Spaß gemacht, ein Programm normalerweise nur durch den Kauf eines Nachschlagewerks zu schreiben.
Recommended Posts