2013-08-21 12 views
7

क्यों इस फ्लैश बिल्डर ?:अवहेलना त्रुटि

package { 
    public class Foo { 
    override public function toString():String { 
     return "Foo"; 
    } 
    } 
} 

टैब पूरा होने के पता चलता है कि इस ओवरराइड के लिए उपलब्ध है में कोई त्रुटि उत्पन्न करता Object.toString ...

त्रुटि संदेश:

Multiple markers at this line: 
-public 
-1020: Method marked override must override another method. 
-overridesObject.toString 

उत्तर

9

toString() पद्धति पर override निकालें।

toString() विधि के बीच एक लोकप्रिय गलतफहमी है, अर्थात्: यदि कोई सुपर क्लास विधि का कस्टम कार्यान्वयन प्रदान करना चाहता है, तो override कीवर्ड की आवश्यकता है। लेकिन Object के मामले में, toString() गतिशील है और ओवरटाइडिंग की आवश्यकता को अस्वीकार करते हुए रनटाइम पर संलग्न है। इसके बजाए, कार्यान्वयन डेवलपर द्वारा प्रदान किया जाना है ताकि कोई रनटाइम पर नहीं बनाया जा सके। सिर्फ एक को अपना खुद का toString():String कार्यान्वयन लिखना होगा।

+0

आप सही हैं, गतिशील गुण देर से बाध्य हैं। 'गुण जो आप गतिशील वर्ग के उदाहरण में जोड़ते हैं वे रन-टाइम इकाइयां हैं ...' ([Livedocs - डायनामिक क्लासेस] (http://livedocs.adobe.com/flex/3/html/help.html?content = 03_Language_and_Syntax_10.html)) –

0

फू कक्षा को विस्तारित नहीं कर रहा है; इसलिए इसलिए ओवरराइड करने के लिए कोई तरीका नहीं है। बस समारोह परिभाषा से ओवरराइड कीवर्ड को हटा कर उसे संकलन चाहिए

package { 
    public class Foo { 
    public function toString():String { 
     return "Foo"; 
    } 
    } 
} 

मैं जोड़ देंगे toString()Object वर्ग है जो कई ActionScript वर्गों से विस्तार करने की एक विधि है। लेकिन, यदि आप ऑब्जेक्ट का विस्तार करते हैं, तो आपको ToString() विधि को ओवरराइड करने की आवश्यकता नहीं है। डॉक्स से:

वस्तु का एक उपवर्ग में इस विधि को फिर से परिभाषित करने के लिए, ओवरराइड कीवर्ड का उपयोग नहीं करते।

इस तरह

:

package { 
    public class Foo extends Object { 
    public function toString():String { 
     return "Foo"; 
    } 
    } 
} 
+0

अजीब ... मैंने स्पष्ट रूप से ऑब्जेक्ट का विस्तार करने की कोशिश की और यह अभी भी शिकायत की गई। –

+0

@ श्री पोलीविर्ल मैंने अपना जवाब थोड़ा सा संपादित किया। ऑब्जेक्ट का विस्तार करते समय भी; आपको ओवरराइड का उपयोग करने की आवश्यकता नहीं है। वह मेरा बुरा था। – JeffryHouser

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