2013-12-15 13 views
26

मेरे पास एक जावा क्लास है जिसमें केवल स्थिर विधियां और फ़ील्ड है, इसलिए मैं इसके लिए कोई ऑब्जेक्ट नहीं बनाना चाहता हूं। मैं इसे दो तरीकों से प्राप्त कर सकता हूं,अमूर्त वर्ग बनाम निजी कन्स्ट्रक्टर

  1. कक्षा abstarct बनाते हैं।
  2. निजी कन्स्ट्रक्टर का उपयोग करें।

इनमें से कौन सा बेहतर तरीका है?

+7

पर आप 'java.lang.Math' कक्षा (जिसमें केवल स्थिर फ़ील्ड और विधियां हैं) पर एक नज़र डालें। उन्होंने कन्स्ट्रक्टर को निजी बना दिया। http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Math.java। सुनिश्चित करें कि आपकी कक्षा भी अंतिम है। टिप्पणी के लिए –

+0

+1, हमारे सामान्य प्रश्न जावा पुस्तकालयों में ही मिल सकते हैं। प्रभावी जावा के लिए – Batty

उत्तर

37

आपको private कन्स्ट्रक्टर के साथ जाना चाहिए।

यदि आपकी कक्षा सार है, तो इसे बढ़ाया जा सकता है और वस्तुओं को बनाया जा सकता है। प्रश्न से मेरी समझ के अनुसार, आप जो चाहते हैं वह गैर तत्काल वर्ग है।

Item 4 of Effective java से

:

एक वर्ग सार काम नहीं करता बनाकर noninstantiability लागू करने के लिए प्रयास कर रहा है। कक्षा को उप-वर्गीकृत किया जा सकता है और सबक्लास तत्काल हो सकता है। इसके अलावा, यह उपयोगकर्ता को यह सोचने में गुमराह करता है कि कक्षा को विरासत

+0

+1 – Keerthivasan

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