2012-02-15 13 views
7
public virtual class parent { 
    public static void doStuff(){system.debug('stuff');} 
} 

public class child extends parent{} 

जब मैं फोनक्या सेलफोर्स स्थिर तरीकों का सर्वोच्च समर्थन विरासत है?

child.doStuff(); 

मैं इस त्रुटि मिलती है: विधि मौजूद नहीं है या गलत हस्ताक्षर: child.doStuff()

स्थिर तरीकों Salesforce में नहीं ली गई है या मैंने कुछ गलत कर रहा हूँ ?

+0

असल में, यहां दिए गए उत्तर के अनुसार: http://stackoverflow.com/questions/5316705/overriding-properties-from-abstract-class-in-salesforce-apex 'वर्चुअल' केवल विधियों पर उपयोग किया जा सकता है। –

+4

वर्चुअल न केवल कक्षाओं पर उपयोग किया जा सकता है, लेकिन यदि वर्ग को विरासत में प्राप्त किया जा रहा है तो यह होना चाहिए। और नहीं, इसका मतलब यह नहीं है कि हर विधि को लागू किया जाना है। किसी विधि पर लागू होने पर "वर्चुअल" का अर्थ है कि विधि को ओवरराइड किया जा सकता है। और कक्षा में लागू होने पर "आभासी" का अर्थ है कि इसे विरासत में प्राप्त किया जा सकता है। – naomi

+1

मुझे लगता है कि समस्या vtable संबंधित नहीं है। मुझे लगता है कि यह बाल वर्ग moniker का उपयोग कर अभिभावक वर्ग की सार्वजनिक स्थैतिक विधि के बारे में नहीं है। ओओपी सिद्धांत में नमूना काम करना चाहिए और विधि नाम को अस्वीकार करने से पहले संकलक को मूल वर्ग से परामर्श लेना चाहिए। – mmix

उत्तर

6

एपेक्स इस पर जावा के साथ संगत है। सांख्यिकी विरासत में नहीं हैं।

+0

मुझे यह सुनकर आश्चर्य हुआ, इसलिए मैंने ऑनलाइन चारों ओर देखा और मैं देखता हूं कि आप तकनीकी रूप से सही हैं - वे सख्ती से "विरासत में नहीं" हैं (कोई बहुरूपता नहीं)। लेकिन मुझे अभी भी लगता है कि मेरा उदाहरण जावा में काम करेगा। मेरे पास जावा वातावरण नहीं है, लेकिन यहां एक समान उदाहरण है, इस पर टिप्पणियां देखें http://stackoverflow.com/questions/1740528/inheritance-vs-static-in-java#1740662 – naomi

+0

I लोगों को "विरासत" पुरुष मानते हैं कि इस भ्रम के कारण मतभेदों को समझें। यह शायद शीर्ष डिजाइन के साथ भ्रम को भी शामिल कर सकता है। व्यापक शब्दों में विरासत का मतलब माता-पिता का पुन: उपयोग होता है, इसलिए बच्चे को रोकने से ओओपी सिद्धांत में कुछ भी नहीं है .doStuff()। मैं जावा विशेषज्ञ नहीं हूं, लेकिन अगर मुझे सही याद है, तो child.doStuff (0 जावा – mmix

+0

में काम करेगा हाँ, मुझे एहसास है कि यह मेरे प्रश्न शीर्षक में "विरासत" शब्द का उपयोग करने के लिए geekbait था! आज कुछ सीख लिया! फिर भी, ऐसा लगता है कि मेरा उदाहरण जावा में काम करेगा, लेकिन एपेक्स में नहीं है। ओह ठीक है। – naomi

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