2010-02-16 8 views
23

जावा के साथ साबुन विकास के संबंध में इंटरनेट पर एक ट्यूटोरियल के बाद, मुझे अपने लिए एक असामान्य कोड के साथ this link मिला।क्या 'ऑब्जेक्ट बढ़ाता है' का उद्देश्य है या क्या यह अनावश्यक है?

कोड:

public class SoapService extends Object { 

    /** Creates new SoapService */ 
    public SoapService() { 
    } 

/** This is the SOAP exposes method 
*/ 
    public String sayGreeting(String name) 
    { 
     return "Hello "+name; 
    } 
} 

क्या फैली वस्तु 'वाक्य रचना के साथ है? मैंने कभी इस तरह के वाक्यविन्यास का सामना नहीं किया है (केवल जेनेरिक पर)।

क्या इस वाक्यविन्यास का कोई उद्देश्य है या 'सादा गूंगा' है?

+0

इसके बारे में एक दर्जन अन्य उत्तरों भी हैं - एसओ और देखो पर खोजें। – Kylar

उत्तर

34

जब तक ऑब्जेक्ट क्लास वास्तव में java.lang.Object वर्ग नहीं है (ट्यूटोरियल में आयात शामिल नहीं है, इसलिए इसे देखना मुश्किल है), extends Object अनावश्यक है।

+18

एक और वर्ग ऑब्जेक्ट नामकरण के कारण भ्रम का बहुत सोचा। * shudder * – Yishai

+1

भले ही आयात किया गया हो, फिर भी यह java.lang.Object का उपयोग करेगा जब तक कि यह सार्वजनिक वर्ग साबुन सेवा का विस्तार नहीं करता है। अन्य। ऑब्जेक्ट {...} –

+2

वहाँ org.omg.CORBA.Object है , लेकिन यह यहां प्रासंगिक होने की प्रतीत नहीं होता है। –

3

इसका मतलब है कि यह ऑब्जेक्ट क्लास से सीधे प्राप्त होता है। Here जावा में विरासत के बारे में अधिक है।

+3

मेरा -1 बर्बाद नहीं करेगा लेकिन यह बेकार है। – orbfish

9

जावा में सभी ऑब्जेक्ट्स Object का विस्तार करते हैं, इसलिए मैं कहूंगा कि यह अनावश्यक है।

6

सभी वर्ग ऑब्जेक्ट का विस्तार करते हैं वैसे भी यह केवल अनावश्यक कोडिंग का कोई प्रभाव नहीं पड़ता है।

+0

यही कारण है कि मैंने पूछा है ... शायद ट्यूटोरियल का लेखक 'मूल' कोड लिखने की योजना बना रहा था। :) –

2

नहीं। यह स्पष्ट रूप से कुछ ऐसा करने वाला है जो अंतर्निहित है।

2

यह अनियंत्रित है। जावा में प्रत्येक वर्ग ऑब्जेक्ट को कुछ स्तर पर बढ़ाती है। इसे छोड़ दें, जब तक कि आपको कुछ विशिष्ट स्पष्टीकरण की आवश्यकता न हो।

1

मेरा वोट, सादे गूंगा - लेकिन फिर मैं केवल जावा के साथ खेलते हैं ...

लेकिन किसी भी वर्ग के रूप में तक मुझे पता है वस्तु वर्ग से विरासत ...

1

यह कानूनी है, लेकिन बेकार बॉयलरप्लेट है । सब कुछ ऑब्जेक्ट बढ़ाता है ताकि भाषा की कल्पना आपको इसे छोड़ने की अनुमति दे, और इसे आम तौर पर छोड़ दिया जाना चाहिए (कोडिंग मानकों के कुछ लेखक असहमत हैं)।

जेनरिक में स्थिति समान है (ऑब्जेक्ट विस्तारित और अनावश्यक है), यह सिर्फ कुछ कारणों से है (मैंने कुछ दावा देखा है कि शुरुआती छोटी गाड़ी जेनेरिक कार्यान्वयन में वाइल्डकार्ड के साथ समस्याएं थीं) यह थोड़ा सा पकड़ा गया है और वहां

2

Java Language Specification में बताया गया है कि क्लॉज वैकल्पिक है। यदि इसे छोड़ा जाता है, तो कक्षा java.lang.Object से ली गई है। यह सिर्फ कोड लिखने या इसे इस मामले में लिखने के लिए कोडिंग शैली का मामला नहीं है। आमतौर पर इसे छोड़ दिया जाता है।

4

जेनरेट कोड की तरह थोड़ा दिखता है - को "विस्तार" खंड को छोड़ने के लिए यह अतिरिक्त प्रयास है, यदि विशेष रूप से जनरेटर टेम्पलेट-आधारित है, तो "विस्तार" खंड को छोड़ दें।

2

यह मूर्ख कोड है। जावा में प्रत्येक वर्ग एक ऑब्जेक्ट क्लास बढ़ाती है। इस स्पष्टीकरण को टाइप करने की कोई आवश्यकता नहीं है

-1

क्यों इसे स्पष्ट नहीं करते?

मैं इसे जोड़ने के लिए हूं - हर कोई "निहित रूप से" जानता है कि प्रत्येक जावा क्लास स्पष्ट रूप से Object तक फैली हुई है। इसे स्पष्ट रूप से लिखकर उन्हें अनुमान लगाने की ज़रूरत नहीं है।

1

एक संभावना है और यही वह व्यक्ति है जिसने इसे किसी वर्ग को विस्तारित नहीं करना चाहते हैं। आप हमेशा पाठ्यक्रम का कामकाज कर सकते हैं, लेकिन यही एकमात्र चीज है जिसके साथ मैं आ सकता हूं।

+0

वास्तव में अच्छा बिंदु! – Whimusical

0

चूंकि जावा एक ऑब्जेक्ट उन्मुख भाषा है, यह विरासत का समर्थन करता है जो किसी अन्य वर्ग के गुणों को विरासत में लेता है, उदाहरण के लिए सभी जावा वस्तुएं java.lang.Object वर्ग से प्राप्त होती हैं। उपर्युक्त उदाहरण से यह समझा जाता है कि यह स्पष्टीकरण है विरासत का ध्यान दें कि सभी वर्ग, चाहे वे बताते हैं या नहीं, java.lang.Object से प्राप्त होंगे।

0

किसी भी वर्ग कि स्पष्ट रूप से अन्य वर्ग विस्तार नहीं करता है, परोक्ष

0

सभी वर्गों वस्तु फैली डिफ़ॉल्ट रूप से java.lang.Object फैली हुई है। आप इसे देख सकते हैं here

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