لقد قمت بالتبديل من C# إلى Java لفترة من الوقت، وأود أن ألخص ما أعتقد أنه الفرق بين بناء جملة Java وC#، إذا كان لديك أي آراء مختلفة، أود أن أسأل الجميع متى تعلم Haihan Java لأول مرة لقد شعر أن بناء الجملة كان تقريبًا نفس بناء جملة C# (يجب أن أقول C# تقريبًا مثل Java، بعد كل شيء، فإن لغة C# من Microsoft تقلد عادات بناء جملة Java عمدًا)
قال بيل جيتس ذات مرة: "جافا هي لغة البرمجة الأكثر تميزًا"
أقرب إلى المنزل، دعونا نستكشف الاختلافات في بناء الجملة بين Java وC#. . .
1. مساحات الأسماء والحزم
من أجل تنظيم الفئات التي تنفذ وظائف متشابهة معًا، تقدم C# مفهوم مساحة الاسم (مساحة الاسم)
ما يعادل ذلك في Java يسمى الحزمة
2. الاختلافات في التحكم في الوصول إلى الطبقات
يحتوي C# على نوعين فقط: عام وافتراضي (مثل الداخلي)
يمكن لجميع الفئات الوصول إلى الجمهور (في نفس المشروع وفي مشاريع مختلفة)
داخلي (الإعداد الافتراضي هو داخلي عند عدم إضافة أي حرف تحكم قبل الكلمة الأساسية للفئة)، مما يشير إلى أنه لا يمكن الوصول إلى الفئة إلا في نفس المشروع
يوجد نوعان فقط من Java: عام وافتراضي
يمكن لجميع الفئات الوصول إلى public بشكل افتراضي (عند عدم إضافة أي حرف تحكم قبل الكلمة الأساسية للفئة)، لا يمكن الوصول إليه إلا من خلال جميع الفئات في نفس الحزمة.
3. التحكم في الوصول لأعضاء الفصل
هناك أربعة أنواع في لغة C#: عامة، ومحمية، وخاصة (افتراضية)، وداخلية (لاحظ أن الداخلي والافتراضي مختلفان هنا)
public يمكن الوصول إليه من قبل جميع الفئات
لا يمكن الوصول إلى المحمية إلا عن طريق الفئات الفرعية
لا يمكن الوصول إلى القطاع الخاص (أي، افتراضيًا عند عدم كتابة أي أحرف تحكم) إلا داخل الفصل الدراسي
داخلي يمكن الوصول إليه عن طريق الفئات في نفس المشروع
تحتوي Java أيضًا على أربعة أنواع: عامة ومحمية وخاصة وافتراضية
public يمكن الوصول إليه من قبل جميع الفئات
يمكن الوصول إلى protected عن طريق فئات أخرى في نفس الحزمة أو عن طريق فئات فرعية في حزم مختلفة
لا يمكن استخدام القطاع الخاص إلا داخل الفصل الدراسي ويمكن الوصول إليه بواسطة الفئات الأخرى في هذه الحزمة بشكل افتراضي. إذا كانت الفئة الفرعية والفئة الأصلية في حزم مختلفة، فلن تتمكن الفئة الفرعية من الوصول إلى أعضاء التحكم في الوصول الافتراضي في الفئة الأصلية.
4. يتم تنفيذ وراثة الفئة في C# من خلال النقطتين:، ويتم استخدام الامتدادات في Java.
يتم تنفيذ الواجهة من خلال النقطتين: في C# ويتم تنفيذها في Java.
يتم تنفيذ الفئات المختومة باستخدام مختومة في C# ونهائية في Java.
يتم تنفيذ الثوابت كـ const في C# ونهائية في Java
يتم تنفيذ الخصائص في C# باستخدام كتل التعليمات البرمجية المحددة والحصول عليها. في Java، تُستخدم الحقول المشابهة لتلك الموجودة في C# بشكل عام لتمثيل الخصائص، أو يتم تنفيذها باستخدام مُنشئات setter و getter.
يوجد مفهوم للفئة الجزئية في C# ولكن ليس في Java
هناك سمة معدلة للقراءة فقط في C# وهي للقراءة فقط، ولكن ليس في Java.
توجد طرق افتراضية ومعدلة للتجاوز وطرق متجاوزة في C#، ولكن ليس في Java. الأساليب الموجودة في الفئة الأصلية الافتراضية في Java كلها افتراضية.
هناك مفاهيم للكتل البرمجية الثابتة{} والمتزامنة{} في Java، ولكن ليس في C#.
يوجد مفهوم التسميات (مثل labelA:) في Java، ولكن ليس في C#
في لغة C#، تستخدم الفئة الفرعية base.method() لاستدعاء أسلوب الفئة الأصلية، وفي Java، يتم استخدام super.method().
في C#، يتم استخدامه لتحديد ما إذا كان المثيل ينتمي إلى فئة معينة، وفي Java، يتم استخدام المثيل.
في C#، يتم استخدام foreach(int i in array) لاجتياز كل عنصر في المصفوفة، وفي Java، يتم استخدام for(int i : array)