static
क्लास Cup लिखें जिसमें static फ़ील्ड int tally और static मेथड void Mark() हो जो tally = tally + 1; चलाए। Pine में Main रखें और Cup.Mark(); दो बार बुलाएँ, फिर Cup.tally लिखें। दोनों टाइप उसी शिक्षण फ़ाइल में रखें ताकि dotnet run सरल रहे। dotnet run से चलाएँ। स्क्रीन पर एक पंक्ति दिखनी चाहिए: 2। मेथड क्लास नाम से चलती है, ऑब्जेक्ट वेरिएबल से नहीं। क्लास पर एक साझा tally — यही इस पेज का पाठ है। शुरू करने वाली पब्लिक क्लास का नाम Pine रखें।
सदस्य जो क्लास नाम का है
instance-methods पेज पर आपने jar वेरिएबल से j.bump() बुलाया था। यहाँ फ़ील्ड और मेथड खुद Cup पर बैठते हैं। आप Cup.Mark() और Cup.tally से पहुँचते हैं। इस पेज पर उस कॉल के लिए new Cup(...) ज़रूरी नहीं। हर Mark कॉल उसी tally में एक जोड़ता है।
Pine फ़ाइल खोलें। शुरू करने वाली क्लास का नाम Pine ही रहता है। यह पेज स्टार्टर का नाम नहीं बदलता। अगर Jar j = new Jar(3); बचा है और bump डेमो अभी भी Main में सब कुछ है, उसे हटा दें। कोई भी बची Jar क्लास हटा दें। कोई भी बचा Tin हटा दें। कोई भी ReadLine पंक्ति हटा दें। जो फ़ाइल आप रखते हैं वह टाइपिंग का इंतज़ार नहीं करती।
Pine के ब्रेसेस के बाहर — फिर भी उसी फ़ाइल में — लिखें public class Cup। ब्रेसेस के अंदर घोषित करें static int tally;। फिर static मेथड लिखें: static void Mark() { tally = tally + 1; }। इस पेज पर न तो कंस्ट्रक्टर है न इंस्टेंस फ़ील्ड। चलाने से पहले फ़ाइल सेव करें।
मेथड हेडर को static और void दोनों चाहिए। शब्द static सदस्य को क्लास नाम का बताता है। शब्द void अभी भी मतलब है Mark लिखने के लिए कोई मान नहीं लौटाता। हेडर में दोनों शब्द इसी क्रम में रखें।
using System;
public class Cup
{
static int tally;
static void Mark()
{
tally = tally + 1;
}
}
Pine क्लास नाम पर Mark बुलाता है
Pine में public static void Main() रहता है। Main के अंदर क्रम से तीन पंक्तियाँ लिखें: Cup.Mark();, फिर फिर से Cup.Mark();, फिर Console.WriteLine(Cup.tally);। हर कॉल एक जोड़ता है। लेखन साझा गिनती दिखाता है। इस पेज पर आप Jar j = new Jar(3); या j.bump(); नहीं लिखते। वह instance-methods पाठ था।
using System;
public class Pine
{
public static void Main()
{
Cup.Mark();
Cup.Mark();
Console.WriteLine(Cup.tally);
}
}
public class Cup
{
static int tally;
static void Mark()
{
tally = tally + 1;
}
}
रखी हुई फ़ाइल ऊपर से पढ़ें। using System; छोटे नाम तैयार करता है। public class Pine स्टार्टर है। public static void Main() वह जगह है जहाँ रनटाइम शुरू होता है — Main पहले से static है, इसलिए प्रोग्राम बिना पहले Pine ऑब्जेक्ट बनाए शुरू हो सकता है। कॉल Cup.Mark() क्लास पर Mark में जाता है। बॉडी tally = tally + 1 लिखती है। पहली कॉल tally को 0 से 1 ले जाती है। दूसरी इसे 2 पर पहुँचाती है। फिर Main Cup.tally लिखता है और स्क्रीन 2 दिखाती है।
dotnet run से चलाएँ। प्रोग्राम एक पंक्ति लिखकर रुक जाता है। वह आपकी टाइपिंग का इंतज़ार नहीं करता। अगर dotnet run रुककर इंतज़ार करे, फ़ाइल में अभी भी ReadLine है। वह पंक्ति हटाएँ और Pine में दो Cup.Mark(); तथा लेखन रखें, Cup में Mark के साथ। स्क्रीन 2 दिखाती है। अगर 4 या 5 दिखे, शायद बची Jar bump डेमो अभी भी चल रही है। अगर 0 दिखे, Mark कॉल गायब हों या लेखन के बाद चल रही हों।
अगर इस Main आकार में आप Cup. के बिना सिर्फ Mark(); लिखें, तो बिल्ड तब तक मना करेगा जब तक आप अतिरिक्त वायरिंग न जोड़ें जो यह पेज नहीं सिखाता। Cup.Mark(); रखें। अगर Cup c = new Cup(); लिखकर फिर सिर्फ इंस्टेंस मेथड की बात करें, तो आपने static पाठ छोड़ दिया। इस पेज का लक्ष्य क्लास-नाम कॉल है।
j.bump और बचे Jar से तुलना
instance-methods पेज पर j.bump() को आगे ऑब्जेक्ट चाहिए था। एक jar पर बदलाव चाहिए तो वह अभी भी काम करता है। इस पेज पर Cup.Mark() को आगे क्लास नाम चाहिए। बचा हुआ Jar j = new Jar(3); j.bump(); Console.WriteLine(j.fill); अलग पाठ है। इस पेज के लिए Cup, Pine और Cup.Mark(); रखें।
बाद में आप इंस्टेंस मेथड भी बना सकते हैं। यह पाठ साझा काउंटर क्लास पर रखता है ताकि बिना new के दो कॉल भी एक tally साझा करें। सिर्फ Console.WriteLine(Cup); लिखने से साफ़ 2 नहीं दिखता। संग्रहीत संख्या देखने के लिए Console.WriteLine(Cup.tally); लिखें।
📊 j.bump बनाम Cup.Mark
| कॉल आकार | ऑब्जेक्ट चाहिए? | क्या बदलता है |
|---|---|---|
j.bump(); |
हाँ — jar वेरिएबल | उसी jar का fill |
Cup.Mark(); |
नहीं — क्लास नाम इस्तेमाल करें | साझा Cup.tally |
हर Mark कॉल से साझा एक tally
इस पेज पर दो निशान के लिए दो cup नहीं बनाते। पहला Cup.Mark(); और दूसरा Cup.Mark(); दोनों उसी static फ़ील्ड को छूते हैं। static int tally का मतलब यही है। बाद में ऑब्जेक्ट जोड़ें तो भी वे उस एक tally को साझा करते हैं जब तक आप दूसरा डिज़ाइन न बनाएँ। शिक्षण फ़ाइल के लिए क्लास नाम से दो कॉल काफी हैं।
अगर स्क्रीन अभी भी 1 दिखाए, शायद एक ही Mark कॉल हो या कॉलों के बीच लेखन बैठा हो। दोनों कॉल Console.WriteLine(Cup.tally); से पहले रखें। अगर 7 या कोई और बचा नंबर दिखे, पुरानी Tin या Jar डेमो फ़ाइल में हो सकती है। Cup.Mark(); दो बार और Cup.tally पर लेखन रखें।
गलतियाँ जो static कॉल छिपाती हैं
Mark से static हटाने पर वह इंस्टेंस मेथड बन जाता है। तब Main से Cup.Mark(); बिल्ड फेल करता है और पेज क्लास-नाम कॉल नहीं सिखाता। फ़ील्ड और मेथड दोनों पर static वापस लगाएँ। Jar फ़ाइल अभी खुली है इसलिए सिर्फ j.bump(); बुलाना भी यह पाठ छिपाता है — Cup अभ्यास करते समय उस डेमो को Main से हटाएँ।
दूसा जाल सिर्फ Main में Cup.tally = Cup.tally + 1; लिखना और Mark कभी न लिखना है। दो असाइन के बाद 2 प्रिंट हो सकता है, पर यह उस static मेथड आकार को छोड़ देता है जिसे यह पेज टाइप करवाना चाहता है। दो Cup.Mark(); पंक्तियाँ रखें ताकि जोड़ मेथड बॉडी का हो। new Cup() के बाद IntelliSense इंस्टेंस कॉल सुझाए तो इस अभ्यास के लिए नज़रअंदाज़ करें और Cup.Mark(); पर रहें।
यह पेज access के लिए क्या छोड़ता है
यह पेज सदस्यों तक क्लास नाम से पहुँचता है: Cup.Mark() और Cup.tally। अगला पेज — access — public और private जैसे शब्द दिखाता है जो तय करते हैं कौन सदस्य देख सके। यहाँ static पर रहें। हर पंक्ति पर access कीवर्ड न बनाएँ जब तक पहले से इस्तेमाल न करते हों; पाठ का लक्ष्य क्लास-नाम कॉल और साझा फ़ील्ड है।
Cup को Pine के ब्रेसेस के अंदर नेस्ट न करें। इस पेज पर दो क्लासेस फ़ाइल में भाई-बहन की तरह बैठती हैं। अगर Pine कंपाइल करते समय Cup न मिले, देखें public class Cup उसी फ़ाइल में है। अगर स्क्रीन 0 दिखाए, शायद Mark कभी न चला — लेखन से पहले दोनों Cup.Mark(); पंक्तियाँ रखें। अगर बिल्ड कहे Mark को ऑब्जेक्ट चाहिए, देखें मेथड हेडर में अभी भी static है।
आप static int tally; घोषित कर सकते हैं, static void Mark() { tally = tally + 1; } लिख सकते हैं, और Pine.Main से Cup.Mark(); दो बार चला कर Cup.tally लिख सकते हैं। dotnet run से चलाएँ। स्क्रीन 2 दिखाती है। static मेथड क्लास नाम पर चला और साझा फ़ील्ड बदली। Mark को ऐसी क्रिया समझें जो क्लास खुद बिना पहले cup बनाए कर सकती है। Pine वही दरवाज़ा है जिसे dotnet run से खोलते हैं। अगला पेज access है, जहाँ कुछ सदस्य जानबूझकर दूसरे कोड के लिए खुले या बंद होते हैं।
फ़ील्ड और मेथड पर static रखें। कॉल से पहले क्लास नाम रखें: Cup.Mark();। Cup.tally पर लेखन रखें। ये तीन आदतें अगले पेज पर जाने से पहले इस पेज की जाँच हैं। बची j.bump() डेमो Main से बाहर रखें ताकि स्क्रीन गलती से jar का नंबर न दिखाए।
🧠 अपने ज्ञान की परीक्षा करें
अपने ज्ञान की परीक्षा करें
इस इंटरैक्टिव क्विज़ के साथ अपनी चुनौती लें और देखें कि आप विषय को कितनी अच्छी तरह समझते हैं
📝 निर्देश
- हर प्रश्न को ध्यान से पढ़ें
- हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
- आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
- आपकी प्रगति शीर्ष पर दिखाई जाएगी