2013-01-09 11 views
5

विकास को आसान बनाने के साथ-साथ एक सर्वोत्तम अभ्यास प्रश्न यह एक प्रश्न है।क्या एक PHP विस्तारित कक्षा इंटरफेस का भी उत्तराधिकारी है?

<?php 
class FOO implements Iterator 
{ 
    .... 
} 

class BAR extends FOO 
{ 
    .... 
} 

class OTHER extends FOO implements Iterator 
{ 
    .... 
} 
?> 

उपरोक्त उदाहरण में, क्या बीएआर में इटरेटर इंटरफेस भी होगा? यदि हां, तो क्या हर बार किसी भी तरह इंटरफ़ेस को परिभाषित करना बेहतर है (जैसे अन्य करता है) या बीएआर परिभाषा को सर्वोत्तम अभ्यास माना जाएगा?

मैंने इस उदाहरण को सरल बना दिया है, क्योंकि हम फूड के लिए सार कक्षा का उपयोग कर रहे हैं, हम यह सुनिश्चित करना चाहते हैं कि इटरेटर समर्थन है, जिसे तब तत्वों के बीच चलने के लिए बार वर्ग में ओवरराइड किया जा सकता है। हम कुछ कार्यों को उप-वर्गों के लिए परिभाषित करने के लिए मजबूर होना चाहते हैं, लेकिन अन्य विधियों को उचित रूप से उत्तराधिकारी बनाना चाहते हैं, और अभी भी मूल कक्षाओं का उपयोग बच्चों के वर्गों पर इंटरफ़ेस को परिभाषित किए बिना करते हैं।

उत्तर

5

उप-वर्ग Iterator इंटरफ़ेस के सुपरक्लास के कार्यान्वयन का उत्तराधिकारी होगा, जो इसे ओवरराइड करने के लिए स्वतंत्र है। आपको स्पष्ट रूप से implements Iterator कहने की आवश्यकता नहीं है, लेकिन यदि आप ऐसा करते हैं तो आपको सबक्लास में सभी इंटरफ़ेस के तरीकों को लागू करना होगा।

+0

धन्यवाद। यही मेरी अपेक्षा है, लेकिन विस्तृत परीक्षण के बिना, मुझे यकीन नहीं था और मेरी धारणाओं को मान्य करना चाहता था। –

संबंधित मुद्दे