जवाबों:
हाँ यह कर सकते हैं। हालाँकि, प्रति फ़ाइल केवल एक सार्वजनिक शीर्ष-स्तरीय वर्ग हो .java
सकता है, और सार्वजनिक शीर्ष-स्तरीय कक्षाओं का स्रोत फ़ाइल के समान नाम होना चाहिए।
एक स्रोत फ़ाइल में कई वर्गों को शामिल करने का उद्देश्य मुख्य सार्वजनिक वर्ग के साथ संबंधित समर्थन कार्यक्षमता (आंतरिक डेटा संरचना, समर्थन कक्षाएं, आदि) को बंडल करना है। ध्यान दें कि ऐसा करना हमेशा ठीक है - केवल प्रभाव आपके कोड की पठनीयता (या नहीं) पर है।
java.awt.LightweightDispatcher
?
यदि आप सार्वजनिक वर्ग को लागू करना चाहते हैं, तो आपको इसे उसी वर्ग के नाम वाली फ़ाइल में लागू करना होगा। एक एकल फ़ाइल में एक सार्वजनिक और वैकल्पिक रूप से कुछ निजी कक्षाएं हो सकती हैं। यह उपयोगी है अगर वर्गों को केवल सार्वजनिक वर्ग द्वारा आंतरिक रूप से उपयोग किया जाता है। इसके अतिरिक्त सार्वजनिक वर्ग में आंतरिक वर्ग भी हो सकते हैं।
यद्यपि एक स्रोत फ़ाइल में एक या अधिक निजी कक्षाएं होना ठीक है, मैं कहूंगा कि इसके बजाय आंतरिक और अनाम कक्षाओं का उपयोग करने के लिए अधिक पठनीय है। उदाहरण के लिए, एक सार्वजनिक वर्ग के अंदर एक तुलनित्र वर्ग को परिभाषित करने के लिए एक अनाम वर्ग का उपयोग कर सकता है:
public static Comparator MyComparator = new Comparator() {
public int compare(Object obj, Object anotherObj) {
}
};
तुलनित्र वर्ग को सार्वजनिक होने के लिए सामान्य रूप से एक अलग फ़ाइल की आवश्यकता होगी। इस तरह इसका उपयोग करने वाले वर्ग के साथ बंडल किया गया है।
A .java फ़ाइल को संकलन इकाई कहा जाता है। प्रत्येक संकलन इकाई में किसी भी शीर्ष स्तर की कक्षाएं और इंटरफेस हो सकते हैं। यदि कोई सार्वजनिक शीर्ष-स्तरीय प्रकार नहीं हैं, तो संकलन इकाई का नाम कुछ भी हो सकता है।
//Multiple.java
//preceding package and import statements
class MyClass{...}
interface Service{...}
...
//No public classes or interfaces
...
एक संकलन इकाई में केवल एक सार्वजनिक वर्ग / इंटरफ़ेस हो सकता है। क्यू को इस सार्वजनिक शीर्ष-स्तरीय प्रकार के रूप में नामित किया जाना चाहिए।
//Test.java
//named exactly as the public class Test
public class Test{...}
//!public class Operations{...}
interface Selector{...}
...
//Other non-public classes/interfaces
मुख्य विधि के बारे में महत्वपूर्ण बिंदु - भाग 1
(भाग 2 में शामिल कक्षाओं की संख्या और उनके अभिगम स्तर के बारे में अंक)
अनाम आंतरिक कक्षाओं के अलावा, एक अन्य उपयोग निजी आंतरिक कक्षाएं हैं जो एक सार्वजनिक इंटरफ़ेस लागू करते हैं ( इस लेख को देखें )। बाहरी वर्ग सभी निजी क्षेत्रों और आंतरिक वर्ग के तरीकों का उपयोग कर सकता है।
यह आपको दो कसकर युग्मित कक्षाएं बनाने देता है, जैसे कि एक मॉडल और इसका दृश्य, या तो कार्यान्वयन को उजागर किए बिना। एक अन्य उदाहरण एक संग्रह और इसके पुनरावृत्तियों है।
सामान्य तौर पर, प्रति फ़ाइल एक वर्ग होना चाहिए। यदि आप इस तरह से चीजों को व्यवस्थित करते हैं, तो जब आप एक वर्ग की खोज करते हैं, तो आप जानते हैं कि आपको केवल उस नाम के साथ फ़ाइल की खोज करने की आवश्यकता है।
अपवाद तब होता है जब एक या एक से अधिक छोटे सहायक वर्गों का उपयोग करके एक वर्ग को सर्वोत्तम रूप से लागू किया जाता है। आमतौर पर, कोड का पालन करना सबसे आसान होता है, जब वे कक्षाएं एक ही फाइल में मौजूद हों। उदाहरण के लिए, मेथड कॉल के बीच कुछ डेटा पास करने के लिए आपको एक छोटे 'टपल' रैपर क्लास की आवश्यकता हो सकती है। एक अन्य उदाहरण रननेबल या कॉल करने योग्य 'कार्य' कक्षाएं हैं। वे इतने छोटे हो सकते हैं कि वे सबसे अच्छे माता-पिता वर्ग के साथ संयुक्त रूप से बना रहे हैं और उन्हें बुला रहे हैं।
हाँ 200% ,
उदाहरण:
class A {
void methodDeclaration() { System.out.println("!!!"); }
}
class B {
public static void main(String[] args) {
new A().methodDeclaration();
}
}
हाँ, यह हो सकता है, लेकिन किसी भी पैकेज के अंदर केवल 1 सार्वजनिक वर्ग हो सकता है क्योंकि जावा कंपाइलर .Class फाइल बनाता है जो पब्लिक क्लास नाम के समान नाम की है इसलिए यदि उनकी 1 से अधिक पब्लिक क्लास हैं तो उनके लिए चयन करना मुश्किल होगा संकलक कि कक्षा फ़ाइल का नाम क्या होना चाहिए।
बदलता है ... एक ऐसा उदाहरण एक अनाम वर्ग होगा (आप घटना श्रोताओं और इस तरह का उपयोग करते समय उन सभी का सामना करेंगे)।
मुझे लगता है कि यह होना चाहिए "वहाँ केवल एक गैर-स्टेटिक शीर्ष स्तर सार्वजनिक वर्ग प्रति .java फ़ाइल हो सकती है"। है ना?
यदि आप एक सिंगलटन को लागू करना चाहते हैं, तो यह एक ऐसा वर्ग है जो आपके प्रोग्राम में केवल एक उदाहरण के साथ आवेदन के निष्पादन के दौरान स्मृति में चलता है, तो एक सिंगलटन को लागू करने के तरीकों में से एक सार्वजनिक वर्ग के अंदर एक निजी स्थिर वर्ग का घोंसला बनाना है। । तब भीतर का निजी वर्ग केवल तभी तात्कालिकता करता है, जब उसकी सार्वजनिक पद्धति को निजी उदाहरण तक पहुँचने के लिए कहा जाता है।
इस विकी लेख को देखें,
https://en.wikipedia.org/wiki/Singleton_pattern
अवधारणा को चबाने में कुछ समय लगता है।
.Java फ़ाइल में, केवल एक सार्वजनिक शीर्ष-स्तरीय वर्ग हो सकता है जिसका नाम फ़ाइल के समान है, लेकिन कई सार्वजनिक आंतरिक वर्ग हो सकते हैं, जो सभी के लिए निर्यात किए जा सकते हैं और बाहरी वर्ग के फ़ील्ड / विधियों तक पहुँच सकते हैं, उदाहरण के लिए : AlertDialog.Builder ('सार्वजनिक स्थैतिक' द्वारा संशोधित ) AlertDialog ('सार्वजनिक' द्वारा संशोधित)
हां, आपके पास एक .Java फ़ाइल में एक से अधिक कक्षा हो सकती हैं। लेकिन आपने उनमें से एक को सार्वजनिक कर दिया है। और पब्लिक क्लास के नाम के साथ .java फाइल को सेव करें। जब आप उस .java फ़ाइल को संकलित करेंगे, जिससे आपको .java फ़ाइल में परिभाषित प्रत्येक वर्ग के लिए अलग .class फ़ाइलें मिलेंगी।
इसके अलावा एक .java फ़ाइल में एक से अधिक वर्ग को परिभाषित करने के लिए बहुत अधिक विधि हैं।
हाँ ! .java फ़ाइल में केवल एक सार्वजनिक वर्ग हो सकता है।
यदि आप चाहते हैं कि ये दो वर्ग सार्वजनिक हों तो उन्हें दो .java फ़ाइलों में डाल दिया जाना चाहिए: A.java और B.java।
हाँ, आपके पास .java फ़ाइल के अंदर एक से अधिक वर्ग हो सकते हैं। उनमें से ज्यादातर सार्वजनिक हो सकते हैं। अन्य पैकेज-निजी हैं। वे निजी या संरक्षित नहीं हो सकते। यदि कोई सार्वजनिक है, तो फ़ाइल में उस वर्ग का नाम होना चाहिए। अन्यथा उस फ़ाइल को उसके नाम के अनुसार कुछ भी दिया जा सकता है।
एक फ़ाइल के अंदर कई कक्षाएं होने का मतलब है कि वे कक्षाएं एक ही पैकेज में हैं। तो कोई अन्य वर्ग जो उस पैकेज के अंदर है, लेकिन उस फाइल में नहीं है, उन कक्षाओं का भी उपयोग कर सकते हैं। इसके अलावा, जब उस पैकेज को आयात किया जाता है, तो आयात करने वाला वर्ग उनका भी उपयोग कर सकता है।
अधिक विस्तृत जांच के लिए, आप यहां मेरे ब्लॉग पोस्ट पर जा सकते हैं ।
किसी फ़ाइल में केवल एक सार्वजनिक श्रेणी का शीर्ष स्तरीय वर्ग हो सकता है। उस सार्वजनिक वर्ग का वर्ग नाम फ़ाइल का नाम होना चाहिए। इसमें कई सार्वजनिक आंतरिक वर्ग हो सकते हैं।
आपके पास एक ही फ़ाइल में कई कक्षाएं हो सकती हैं। किसी फ़ाइल में क्लास दृश्यता के विभिन्न स्तरों की सीमाएँ इस प्रकार हैं:
शीर्ष स्तर की कक्षाएं:
1 सार्वजनिक वर्ग
0 निजी वर्ग
डिफ़ॉल्ट / संरक्षित कक्षाओं की संख्या
आंतरिक कक्षाएं:
किसी भी दृश्यता के साथ आंतरिक कक्षाओं की संख्या (डिफ़ॉल्ट, निजी, संरक्षित, सार्वजनिक)
अगर मैं गलत हूं कृपया मुझे सही।
हाँ यह कर सकते हैं। हालाँकि, प्रति .java फ़ाइल में केवल एक सार्वजनिक वर्ग हो सकता है, क्योंकि सार्वजनिक कक्षाओं में स्रोत फ़ाइल के समान नाम होना चाहिए।