2008-10-04 19 views
6

क्या जावा में यह संभव है कि कक्षा में उप-वर्गों का एक विशिष्ट सेट हो और कोई अन्य न हो? उदाहरण के लिए:जावा में बीजगणित प्रकारों को लागू करने का कोई तरीका है?

public abstract class A {} 
public final class B extends A {} 
public final class C extends A {} 
public final class D extends A {} 

क्या मैं किसी भी तरह से लागू कर सकता हूं कि ए के किसी अन्य उप-वर्ग को कभी भी बनाया जा सकता है?

उत्तर

4

कक्षा A पैकेज-स्तर पहुंच (और कोई अन्य निर्माता) के साथ एक निर्माता है।

धन्यवाद, डेव एल।, किसी अन्य निर्माता के बारे में कुछ नहीं।

+0

एक ही एक निजी निर्माता होने के साथ वैकल्पिक रूप से सभी के रूप में नेस्टेड कक्षाएं। –

+0

यह सौंदर्यशास्त्र के रूप में नहीं है, हालांकि: एबी, एसी ... –

+1

बचाव के लिए स्थैतिक आयात, मार्क्सिडाड – Apocalisp

0

आप एक अलग पैकेज में कक्षा ए, बी, सी, डी डाल सकते हैं और कक्षा ए को सार्वजनिक नहीं बना सकते हैं।

+1

कक्षा बनाना एक निजी प्रकार का बीजगणित डेटाटाइप (यानी, पॉलिमॉर्फिज्म) –

3

शायद आप एक enum (जावा> = 1.5) चाहते हैं। एक enum प्रकार निश्चित मूल्यों का एक सेट हो सकता है। और इसमें कक्षा की सभी उपहार हैं: उनके पास फ़ील्ड और गुण हो सकते हैं, और उन्हें एक इंटरफ़ेस लागू कर सकते हैं। एक enum बढ़ाया नहीं जा सकता है।

उदाहरण:

enum A { 

    B, 
    C, 
    D; 

    public int someField; 

    public void someMethod() { 
    } 


} 
+0

के उद्देश्य को हरा देता है यदि मैं गलत नहीं हूं, तो आपके उदाहरण में बी, सी, और डी मूल्य हैं, प्रकार नहीं। – Apocalisp

+0

आह, आप सही हैं ... आप कई बी नहीं बना सकते हैं :-( – asterite

+0

लेकिन यह अच्छा है अगर आप उपप्रकारों को राज्य नहीं चाहते हैं (उदाहरण में वे किसी भी तरीके को लागू नहीं करते हैं)। –