Gibt es einen Unterschied zwischen dem, was eine Methode in C und Java tun kann?


Antwort 1:

Ja. Sie können keine Methoden in C haben, sondern nur Funktionen.

Der Unterschied besteht darin, dass Methoden als Teil eines Objekts in Java leben. Diese enthält einige private Datenstrukturen, einige weitere öffentliche Methoden, die Außenstehende aufrufen können, und private Methoden, die als Helfer fungieren.

Das nächste, was Sie in C erhalten, ist eine Struktur voller Daten, und Sie können einen Zeiger auf diese Struktur an eine C-Funktion übergeben.

Aber das ist mehr oder weniger rückwärts zur objektorientierten Programmierung in Java.

Sie erhalten auch eine Sache namens Polymorphismus in OOP, die nicht in C beheimatet ist. Praktisch hilft dies Ihnen, viele If- und switch-Anweisungen zu vermeiden, die Sie in C erhalten würden, während Sie den gleichen Effekt haben.


Antwort 2:

Wie einige andere bereits betont haben, ist Java eine objektorientierte Sprache und C nicht. Gestern habe ich darüber geschrieben, warum eine C-Struktur nicht einer C ++ - Klasse entspricht. Zu einem großen Teil gilt das, was ich dort gesagt habe, auch für Java.

Da C keine Hilfe für OOP direkt implementiert, können Sie beim Homebrewing Dinge tun, die Java einfach nicht tut. Beispielsweise können Sie in C mehrere Vererbungen durchführen, da Sie nicht nur die Klassen implementieren, sondern auch den Mechanismus erstellen, der die Vererbung durchführt. In diesem Fall können Sie jede Art von Methodenversandmechanismus implementieren, die Sie möchten. Das, was mir am nächsten gekommen ist, war ein generischer Mechanismus für in C geschriebene Zustandsautomaten. Am Ende stellte ich fest, dass ich viel weniger Zeit damit verbrachte, ihn zu erklären, wenn ich nur jede Zustandsmaschine einzeln implementierte.

Theoretisch sind sowohl C als auch Java vollständig und daher in ihren Fähigkeiten gleichwertig. In Wirklichkeit verhalten sich Methoden und Funktionen unterschiedlich, sodass sich die Art und Weise, wie Sie Ihre Programmlogik aufteilen, unterscheidet. Während Sie äquivalente Programme mit denselben C-Funktionen oder Java-Methoden schreiben können, organisiert es niemand genau so, da mindestens eine dieser Implementierungen das Gefühl hat, eine Sprache so zu verwenden, als wäre es die andere.


Antwort 3:

Wie einige andere bereits betont haben, ist Java eine objektorientierte Sprache und C nicht. Gestern habe ich darüber geschrieben, warum eine C-Struktur nicht einer C ++ - Klasse entspricht. Zu einem großen Teil gilt das, was ich dort gesagt habe, auch für Java.

Da C keine Hilfe für OOP direkt implementiert, können Sie beim Homebrewing Dinge tun, die Java einfach nicht tut. Beispielsweise können Sie in C mehrere Vererbungen durchführen, da Sie nicht nur die Klassen implementieren, sondern auch den Mechanismus erstellen, der die Vererbung durchführt. In diesem Fall können Sie jede Art von Methodenversandmechanismus implementieren, die Sie möchten. Das, was mir am nächsten gekommen ist, war ein generischer Mechanismus für in C geschriebene Zustandsautomaten. Am Ende stellte ich fest, dass ich viel weniger Zeit damit verbrachte, ihn zu erklären, wenn ich nur jede Zustandsmaschine einzeln implementierte.

Theoretisch sind sowohl C als auch Java vollständig und daher in ihren Fähigkeiten gleichwertig. In Wirklichkeit verhalten sich Methoden und Funktionen unterschiedlich, sodass sich die Art und Weise, wie Sie Ihre Programmlogik aufteilen, unterscheidet. Während Sie äquivalente Programme mit denselben C-Funktionen oder Java-Methoden schreiben können, organisiert es niemand genau so, da mindestens eine dieser Implementierungen das Gefühl hat, eine Sprache so zu verwenden, als wäre es die andere.


Antwort 4:

Wie einige andere bereits betont haben, ist Java eine objektorientierte Sprache und C nicht. Gestern habe ich darüber geschrieben, warum eine C-Struktur nicht einer C ++ - Klasse entspricht. Zu einem großen Teil gilt das, was ich dort gesagt habe, auch für Java.

Da C keine Hilfe für OOP direkt implementiert, können Sie beim Homebrewing Dinge tun, die Java einfach nicht tut. Beispielsweise können Sie in C mehrere Vererbungen durchführen, da Sie nicht nur die Klassen implementieren, sondern auch den Mechanismus erstellen, der die Vererbung durchführt. In diesem Fall können Sie jede Art von Methodenversandmechanismus implementieren, die Sie möchten. Das, was mir am nächsten gekommen ist, war ein generischer Mechanismus für in C geschriebene Zustandsautomaten. Am Ende stellte ich fest, dass ich viel weniger Zeit damit verbrachte, ihn zu erklären, wenn ich nur jede Zustandsmaschine einzeln implementierte.

Theoretisch sind sowohl C als auch Java vollständig und daher in ihren Fähigkeiten gleichwertig. In Wirklichkeit verhalten sich Methoden und Funktionen unterschiedlich, sodass sich die Art und Weise, wie Sie Ihre Programmlogik aufteilen, unterscheidet. Während Sie äquivalente Programme mit denselben C-Funktionen oder Java-Methoden schreiben können, organisiert es niemand genau so, da mindestens eine dieser Implementierungen das Gefühl hat, eine Sprache so zu verwenden, als wäre es die andere.