क्लास फील्ड्स
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग का सार है प्रोग्राम को ऑब्जेक्ट्स के इंटरेक्शन के रूप में प्रस्तुत करना।
 
ऑब्जेक्ट कुछ प्रकार की इकाई होती है जिसमें कुछ विशेषताएँ होती हैं और कुछ ऑपरेशन होते हैं।

वस्तुओं को मूल रूप से वास्तविकता का अनुकरण करने के लिए बनाया गया था: हमारे आस-पास की कई चीजों को एक वस्तु के रूप में दर्शाया जा सकता है। उदाहरण के लिए, आपके द्वारा हाल ही में पढ़ी गई पुस्तक को 'नाम', 'लेखक', 'आयु रेटिंग', 'पुस्तक का पाठ', 'पृष्ठों की संख्या' आदि गुणों के साथ एक वस्तु के रूप में सोचा जा सकता है। पुस्तक के ऊपर आप "पुस्तक पढ़ना", "पुस्तक जलाना", आदि जैसे कार्य कर सकते हैं।
जावा प्रोग्रामिंग भाषा की शब्दावली में, ये "गुण" फ़ील्ड्स कहलाते हैं, और वस्तुओं पर संचालन तरीके कहलाते हैं।
चूंकि जावा एक वैधानिक रूप से टाइप की गई भाषा है, किसी भी वस्तु को कुछ पैटर्न के अनुसार बनाया जाना चाहिए। जावा में, ऐसे टेम्प्लेट कक्षाएं हैं। कक्षा बताती है कि एक निश्चित प्रकार की वस्तु में कौन से क्षेत्र हो सकते हैं और उस पर कौन से संचालन परिभाषित किए गए हैं।
वर्ग और ऑब्जेक्ट के बीच का अंतर "कार" के अंतर के समान है और "टोयोटा केमरी, चेबुरेकोवो स्ट्रीट पर 5वें घर में खड़ी है".

जावा में फ़ील्ड्स के साथ अपनी स्वयं की वस्तुओं की कक्षा बनाने की प्रक्रिया पर विचार करें। कक्षा की किताब { स्ट्रिंगनाम; स्ट्रिंग लेखक का नाम; अंतर आयु आवश्यकता; स्ट्रिंगटेक्स्ट; इंट पेजकाउंट; } यह कोड वर्ग"पुस्तक" बनाता है। वस्तुओंवर्ग «पुस्तक» दो पूर्णांक गुण हैं (नाम « ("<कोड>नाम", "<कोड>लेखक का नाम", और "<कोड>पाठ" नामों के साथ।
फ़ील्ड्स के साथ क्लास बनाने का सामान्य सिंटैक्स इस प्रकार है।
  वर्ग <कक्षा का नाम> { <प्रथम गुण प्रकार> <प्रथम संपत्ति का नाम> <दूसरा गुण प्रकार> <दूसरी संपत्ति का नाम> &हेली; <पिछली संपत्ति का प्रकार> <अंतिम संपत्ति का नाम> }

बेशक, जावा में, आप न केवल इस तरह से कक्षाएं बना सकते हैं (इसमें विधियां, एक्सेस संशोधक और भी बहुत कुछ हैं), लेकिन बाद में और भी बहुत कुछ।

क्लास मेथड्स
Java में ऑब्जेक्ट पर होने वाले ऑपरेशन को मेथड्स कहा जाता है। तरीके गणित के कार्यों की तरह हैं: वे तर्क ले सकते हैं और एक मान लौटा सकते हैं। दूसरी ओर, जावा में मेथड भी ऑब्जेक्ट के सभी क्षेत्रों तक पहुंच प्राप्त करते हैं

कक्षा में विधि बनाने के लिए, आपको इसे कक्षा में शामिल करना होगा। उदाहरण के लिए, हम एक प्रिंट(उम्र) पद्धति को परिभाषित कर सकते हैं जो हमारी पुस्तक के बारे में जानकारी प्रिंट करेगी और यदि उपयोगकर्ता अभी तक उस पुस्तक के लिए पर्याप्त आयु का नहीं है तो एक चेतावनी प्रदर्शित करेगी।

का उपयोग करके उत्पन्न किया गया
<पूर्व शैली = "मार्जिन-बाएं: 0 पीएक्स; मार्जिन-दाएं: 0 पीएक्स"> कक्षा पुस्तक { स्ट्रिंग का नाम ; स्ट्रिंग लेखक का नाम ; int ageRequirement; स्ट्रिंग टेक्स्ट; int pageCount; // एक प्रिंट विधि बनाएं शून्य print(int उम्र) { सिस्टम.बाहर< स्पैन स्टाइल="रंग:#7d9029">प्रिंटलाइन("नाम: " +name); सिस्टम.बाहर< स्पैन स्टाइल="रंग:#7d9029">प्रिंटलाइन("लेखक: " +authorName); सिस्टम.बाहर< स्पैन स्टाइल="रंग:#7d9029">प्रिंटलाइन("पेजों की संख्या:" स्पैन > "+पूर्णांकtoStringtoString स्पैन>(ageRequirement); // सत्यापन कोड यहां जाता है } }
 
आइए एक विधि बनाने के लिए सिंटैक्स का विश्लेषण करें।
1) किसी विधि की पहली पंक्ति उसका हस्ताक्षर होती है।
2) विधि का रिटर्न प्रकार पहले लिखा जाता है। हमारी विधि कोई मान नहीं लौटाती है, इसलिए हम void लिखते हैं।
3) फिर हस्ताक्षर में विधि का नाम है (<कोड>प्रिंट)।
4) कोष्ठक में तर्कों की एक सूची है। तर्कों को अल्पविराम से अलग किया जाता है। प्रत्येक तर्क के लिए, इसका प्रकार और नाम निर्दिष्ट किया जाता है, एक स्थान से अलग किया जाता है। हमारे मामले में, केवल एक तर्क है, इसका प्रकार int और नाम आयु है, इसलिए कोई अल्पविराम नहीं हैं।
5) इसके बाद कर्ली ब्रेसेस में मेथड कोड आता है। किसी मेथड से वैल्यू रिटर्न करने के लिए return <value>; लिखें। उदाहरण में, विधि कुछ भी वापस नहीं करती है, इसलिए वापसी छोड़ा जा सकता है। किसी विधि के निष्पादन को समय से पहले समाप्त करने के लिए, आप return;.
लिख सकते हैं 6) कक्षा में ही, हम नाम से इस वर्ग की वस्तु के क्षेत्र का उल्लेख कर सकते हैं।

एक्सेस संशोधक
डिफ़ॉल्ट रूप से, जावा में एक वर्ग के सभी फ़ील्ड और तरीके निजी होते हैं। इसका मतलब यह है कि कोई भी उन्हें एक्सेस नहीं कर सकता है, जिसका अर्थ है कि इस वर्ग की वस्तुओं के बाहर कोई भी विधि इस वर्ग की वस्तुओं के क्षेत्रों और विधियों का उपयोग नहीं कर सकती है।

पहुँच संशोधक सार्वजनिक के साथ फ़ील्ड और विधियों को सार्वजनिक किया जा सकता है। एक निजी संशोधक भी है जो क्षेत्र को निजी बनाता है। यह वैकल्पिक है क्योंकि सभी फ़ील्ड और विधियाँ डिफ़ॉल्ट रूप से निजी हैं। यहां सार्वजनिक  और निजी संशोधक का उपयोग करने का एक उदाहरण दिया गया है। कक्षा की किताब { सार्वजनिक स्ट्रिंगनाम; स्ट्रिंग लेखक का नाम; निजी अंतर आयु आवश्यकता; स्ट्रिंगटेक्स्ट; सार्वजनिक इंट पेजकाउंट; int getTextLength () { वापसी पाठ की लंबाई (); } सार्वजनिक int getAverageLetterCount () { वापसी getTextLength () / पेजकाउंट; } निजी int getDifficuiltyLevel () { वापसी 5 * उम्र की आवश्यकता * पाठ। लंबाई (); } }
<कोड>पुस्तक वर्ग के इस संस्करण में, फ़ील्ड्स <कोड>नाम और <कोड>पेजकाउंट को पढ़ने और अन्य वस्तुओं में संशोधन के लिए सार्वजनिक किया गया है। getAverageLetterCount() विधि अन्य वर्गों की वस्तुओं से बुलाए जाने के लिए भी उपलब्ध है। अन्य सभी क्षेत्र और विधियाँ निजी रहती हैं और केवल इस वर्ग के तरीकों में उपलब्ध हैं। पब्लिक मेथड getAverageLetterCount() में हम प्राइवेट मेथड getTextLength() को कॉल कर सकते हैं क्योंकि getAverageLetterCount() क्लास से ही संबंधित है। लेकिन यह दूसरी क्लास के तरीके से काम नहीं करेगा।

लेकिन फिर खेतों को निजी क्यों बनाया जाए? जावा कोड में, आप अधिकतर केवल निजी फ़ील्ड देखेंगे। तथ्य यह है कि यदि निजी क्षेत्रों तक पहुंच वस्तु के सार्वजनिक तरीकों के माध्यम से की जाती है, तो निजी क्षेत्रों तक ऐसी किसी भी पहुंच के साथ अतिरिक्त क्रियाएं और जांच करना संभव होगा। इसके बारे में अधिक जानकारी एनकैप्सुलेशन के पाठ में मिलेगी।

अब तक के पाठों में कक्षाएं बनाने पर चर्चा की गई है, जो ऑब्जेक्ट बनाने के लिए टेम्पलेट हैं। इसी पाठ में वस्तुओं को स्वयं बनाने और उपयोग करने की प्रक्रिया का वर्णन किया जाएगा।

लिंक्स
जावा भाषा में, एक चर कभी भी किसी वस्तु को संग्रहीत नहीं कर सकता है। इसके बजाय, जावा में संदर्भ हैं जो स्मृति में किसी वस्तु के स्थान की ओर इशारा करते हैं।
ऑब्जेक्ट रेफरेंस टाइप का वेरिएबल बनाने का सिंटैक्स इस प्रकार है:
<कोड><कक्षा का नाम> <परिवर्तनीय नाम>;
यह ध्यान देने योग्य है कि हम तुरंत उस वर्ग को इंगित करते हैं जिसकी वस्तुओं को संदर्भित किया जाएगा।

उदाहरण: "बी" नाम का एक वेरिएबल जो बुक क्लास की ओर इशारा करता है:

<कोड>पुस्तक बी;

उसी तरह, आप क्लास फील्ड बना सकते हैं (आप वहां एक एक्सेस मॉडिफायर जोड़ सकते हैं)। आप संदर्भों की सरणियाँ बना सकते हैं और उन्हें विधियों से वापस कर सकते हैं। उदाहरण:

का उपयोग करके उत्पन्न किया गया
<पूर्व शैली = "मार्जिन-बाएं: 0 पीएक्स; मार्जिन-दाएं: 0 पीएक्स"> सार्वजनिक कक्षा लाइब्रेरी { सार्वजनिक पुस्तक[] पुस्तकें; सार्वजनिक पुस्तक findBookWithName(String name) { //कोड जो सही किताब ढूंढता है } };


निष्कर्ष: कई मायनों में, आप उसी तरह से संदर्भों के साथ काम कर सकते हैं जैसे कि अन्य प्राथमिक प्रकारों (int, long, double...) के चर के साथ।