سؤال

حسنًا ، لذلك لدي فئة لـ "بنية بيانات متقدمة" (في هذه الحالة شجرة كيندا) ، لذلك قمت بتهمة التكرار كطبقة خاصة فيه. لذلك يحتاج التكرار إلى تنفيذ وظيفة إزالة لإزالة العنصر الأخير.

الآن ، ينطوي ADT بالفعل على وظيفة إزالة ، وفي هذه الحالة ، لا يوجد سوى القليل (التفكير في الأمر ، لا أعتقد شيئًا) لاكتسابها من خلال تفريغ وظيفة إزالة مختلفة للمؤلف.

إذن كيف يمكنني الاتصال بإزالة من ADT الخاص بي

رسم لدعاماتي:

public class ADT {
...
   private class ADT_Iterator impliments  java.util.Itorator{
      ...
      public void remove(){
          //where I want to call the ADT's remove function from
      }
...

    public void remove( Object paramFoo )
    {
     ...
    }

    ...     

}

لذلك فقط استدعاء إزالة (fooinstance) لن يعمل (هل سيفعل ذلك؟) وهذا.

ماذا أسمي؟ (وتغيير اسم وظيفة إزالة ADT ليست خيارًا ، حيث يجب على هذا الإعلان أن يفي بمتداخلًا ، وأنا لاحظت في Liberty للتغيير)

يمكنني أن أجعل كلاهما يطلق على removeHelper functon ، أعتقد ...

هل كانت مفيدة؟

المحلول

ADT.this.remove(object)

(على الرغم من أن الاتصال فقط (الكائن) سيعمل في هذه الحالة لأنه يحتوي على توقيع مختلف عن طريقة REMOM () في التكرار.)

نصائح أخرى

للحصول على مرجع للفئة الخارجية التي يتم "إرفاقها" ، استخدم "ClassName". هذا ، في حالتك:

   private class ADT_Iterator impliments  java.util.Itorator{
      ...
      public void remove(){
          ADT.this.remove(obj)
      }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top