الشيخ المختار الشنقيطس نشر 22 سبتمبر 2020 أرسل تقرير نشر 22 سبتمبر 2020 السلام عليكم ورحمة الله، انا لدي استشكال في فهم الفرق بين dynamic biding و static biding، ممكن اتوضحولي؟ اقتباس
1 ayoubridouani نشر 22 سبتمبر 2020 أرسل تقرير نشر 22 سبتمبر 2020 السلام عليكم أخي, يشير static binding إلى تنفيذ برنامج حيث يتم معرفة type of object في وقت الترجمة، أي عندما ينفذ المترجم الشفرة، فإنه يعرف نوع object أو class التي ينتمي إليها.بينما في حالة dynamic binding يتم تحديد object في وقت التشغيل. ببساطة يستخدم static binding ال type of class للربط, بينما يستخدم dynamic binding نوع الكائن type of object حيث أن resolution تحدث فقط في وقت التشغيل لأن object الذي تم إنشاؤه فقط أثناء وقت التشغيل بسبب أن الربط الديناميكي يصبح أبطأ مما هو عليه في حالة الربط الثابت. دعنا نرى المثال التالي لتصلك الفكرة أدق: بخصوص الربط الثابت: والخارج هو بينما في الربط الدينامكي: والخارج هنا سيكون 1 اقتباس
1 سمير عبود نشر 22 سبتمبر 2020 أرسل تقرير نشر 22 سبتمبر 2020 مرحباً @الشيخ المختار الشنقيطس يتمثل الفرق بين الربط الثابت ( static binding ) و الربط الديناميكي ( dynamic binding ) في لغة جافا في: الربط الثابت يحدث أثناء الترجمة و التفسير ( compile time ) بينما الربط الديناميكي يحدث أثناء تشغيل البرنامج ( Runtime ) التوابع ( methods ) و المتغيرات المحددة ك private او static او final تستخدم الربط الثابت بينما يتم ربط التوابع الأخرى ديناميكياً إعتماداً على كائن وقت التشغيل الربط الثابت يستخدم نوع الكلاس بينما الربط الديناميكي يستخدم نوع الكائن في ال overloaded methods يتم إستخدام الربط الثابت بينما في ال overridden methods يتم إستخدام الربط الديناميكي. و هذا مثال عن overloaded methods public class StaticBindingTest { public static void main(String args[]) { Collection c = new HashSet(); StaticBindingTest et = new StaticBindingTest(); et.sort(c); } //overloaded method takes Collection argument public Collection sort(Collection c) { System.out.println("Inside Collection sort method"); return c; } //another overloaded method which takes HashSet argument which is sub class public Collection sort(HashSet hs) { System.out.println("Inside HashSet sort method"); return hs; } } و الخارج سيكون: Inside Collection sort method لأنه نظراً للنقطة 4 فإنه تم إستخدام الربط الثابت إضافةً للنقطة 3 فإن الربط الثابت يعتمد على نوع الكلاس و في هذه الحالة نوع الكلاس هو Collection و هذا مثال آخر عن overridden methods public class DynamicBindingTest { public static void main(String args[]) { Vehicle vehicle = new Car(); //here Type is vehicle but object will be Car vehicle.start(); //Car's start called because start() is overridden method } } class Vehicle { public void start() { System.out.println("Inside start method of Vehicle"); } } class Car extends Vehicle { @Override public void start() { System.out.println("Inside start method of Car"); } } و الخارج سيكون: Inside start method of Car لأنه نظراً للنقطة 4 فإنه تم إستخدام الربط الديناميكي (overridden method) إضافةً للنقطة 3 فإن الربط الديناميكي يعتمد على نوع الكائن و في هذه الحالة نوع الكائن هو Car المصدر: Javarevisited blog post بالتوفيق 1 اقتباس
0 Omar Haddad2 نشر 22 سبتمبر 2020 أرسل تقرير نشر 22 سبتمبر 2020 (معدل) static binding عندما يتم تحديد نوع ال object في وقت compiler time (بواسطة المترجم) ، يُعرف باسم static biding, إذا كان هناك أي دالة private أو final أو static داخل الكلاس يعتبر الإرتباط ثابت مثال: class Dog{ private void eat(){System.out.println("dog is eating...");} public static void main(String args[]){ Dog d1=new Dog(); d1.eat(); } Dynamic binding عندما يتم تحديد نوع الكائن في وقت التشغيل ، يُعرف باسم الربط Dynamic biding مثال class Animal{ void eat(){System.out.println("animal is eating...");} } class Dog extends Animal{ void eat(){System.out.println("dog is eating...");} public static void main(String args[]){ Animal a=new Dog(); a.eat(); } } لوقمت بتنفيذ الكود سيكون الناتج Output:dog is eating... في المثال أعلاه ، لا يمكن لل compiler تحديد نوع الكائن ، لأن instance Dog هو أيضًا instance لـ Animal. لذلك لا يعرف compiler نوعه, أي أنه يتم تحديد النوع وقت التشغيل . تم التعديل في 22 سبتمبر 2020 بواسطة Omar Haddad2 1 اقتباس
السؤال
الشيخ المختار الشنقيطس
السلام عليكم ورحمة الله، انا لدي استشكال في فهم الفرق بين dynamic biding و static biding، ممكن اتوضحولي؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.