2010-09-11 12 views
5

ठीक है, मैं स्कूल के लिए एक असाइनमेंट पर काम कर रहा हूं, और मैंने अपनी मुख्य कक्षा और लेनदेन नामक एक और कक्षा भी स्थापित की है। मेरे मुख्य वर्ग में मेरे पास है:जावा कन्स्ट्रक्टर अपरिभाषित?

Transaction t = new Transaction(); 

और लेनदेन को रेखांकित किया गया है: यह कहता है कि कन्स्ट्रक्टर अपरिभाषित है। क्यूं कर?!

लेनदेन वर्ग इस तरह दिखता है:

public class Transaction { 

private String customerNumber, fName, lName, custAddress, custCity; 
private int custZip, custPhone; 

/** Constructor*/ 
public Transaction(String a, String b, String c, String d, String e, int f, int g){ 
    this.customerNumber = a; 
this.fName = b; 
this.lName =c; 
this.custAddress = d; 
this.custCity = e; 

} 

ऐसा लगता है कि यह सिर्फ काम करना चाहिए, लेकिन यह सिर्फ नहीं है। यहां तक ​​कि जब मैं चर में एक नया गुच्छा प्लग करता हूं जहां मैं मुख्य लेनदेन ऑब्जेक्ट को मुख्य रूप से बना देता हूं, तब भी यह अनिर्धारित कहता है। कृपया कोई मदद करें!

+1

ऐसा लगता है कि शुरू करने के लिए आपको कम से कम कुछ जावा 101 पढ़ने की आवश्यकता है। –

+0

मैं आपको वैरिएबल नामों की जांच करने के लिए भी सुझाव दूंगा। इसके अलावा, यदि आप उन सभी का उपयोग नहीं कर रहे हैं, तो कन्स्ट्रक्टर में parametrize 'f' और' g' क्यों? –

उत्तर

8

आपकी कक्षा में कोई डिफ़ॉल्ट कन्स्ट्रक्टर परिभाषा नहीं है।

जब आप कम से कम एक पैरामीटरयुक्त कन्स्ट्रक्टर की परिभाषा प्रदान करते हैं तो संकलक अब आपको डिफ़ॉल्ट कन्स्ट्रक्टर प्रदान नहीं करता है।

5

ऐसा इसलिए है क्योंकि आपने कोई तर्क के साथ एक कन्स्ट्रक्टर घोषित नहीं किया है।

जब आपके पास कोई कन्स्ट्रक्टर परिभाषित नहीं होता है, तो एक डिफ़ॉल्ट कन्स्ट्रक्टर होता है जिसमें आपके लिए स्वचालित रूप से परिभाषित कोई तर्क नहीं होता है।

लेकिन अब जब आपने तर्क के साथ एक कन्स्ट्रक्टर घोषित कर दिया है, तो अब आपको उन्हें पास करने या किसी भी तर्क के साथ एक और कन्स्ट्रक्टर घोषित करने की आवश्यकता है।

+0

कन्स्ट्रिक्टर ... सबकोनियस रिसाव? :) –

+0

खूनी आईपैड स्पेलचेक – Tom

4

आपको एक डिफ़ॉल्ट कन्स्ट्रक्टर बनाने की आवश्यकता है (जो कोई तर्क नहीं लेता)।

-5

उन लोगों ने कहा कि आप कहते हैं कि कोई डिफ़ॉल्ट कन्स्ट्रक्टर नहीं है क्योंकि आपने तर्क के साथ एक कन्स्ट्रक्टर को कोड किया है, सी ++ सोच रहे हैं। यह सी ++ के लिए सच है लेकिन जावा के लिए नहीं। डिफ़ॉल्ट कन्स्ट्रक्टर जैसी कोई चीज़ नहीं है। आपको अपनी कक्षा के लिए किसी भी कन्स्ट्रक्टर को कोड करना होगा। यदि आप किसी भी वस्तु का निर्माण नहीं कर रहे हैं तो आपके पास एक कन्स्ट्रक्टर नहीं होना चाहिए।

+1

जावा में यदि आप कोई कन्स्ट्रक्टर निर्दिष्ट नहीं करते हैं तो आपको कोई तर्क के साथ एक डिफ़ॉल्ट कन्स्ट्रक्टर मिलता है। –

+0

मैंने प्रयोग किया। क्या आप कह रहे हैं कि myClass mc = new myClass(); यदि आपने कोई तर्क कन्स्ट्रक्टर कोड नहीं किया है तो इसका उपयोग किया जा सकता है? जब मैंने कोशिश की तो यह काम नहीं किया। –

+1

@ जेडी विलियम्स: डिफ़ॉल्ट कन्स्ट्रक्टर केवल तभी मौजूद होता है यदि आप कोई अन्य रचनाकार निर्दिष्ट नहीं करते हैं, न कि कोई तर्क के साथ कोई कन्स्ट्रक्टर नहीं। Http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.8.9 देखें, जो डिफ़ॉल्ट कन्स्ट्रक्टर को परिभाषित करता है। –

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