స్టాటిక్ నెస్టెడ్ తరగతులు - 1

"కాబట్టి, టాపిక్ నంబర్ టూ అనేది స్టాటిక్ నెస్టెడ్ క్లాస్‌లు. నాన్-స్టాటిక్ నెస్టెడ్ క్లాస్‌లను ఇన్నర్ క్లాస్‌లు అని గుర్తుంచుకోండి .

"నెస్టెడ్ క్లాస్ డిక్లరేషన్ సందర్భంలో స్టాటిక్ అనే పదానికి అర్థం ఏమిటో తలకు చుట్టుకుందాం. మీరు ఏమనుకుంటున్నారు?"

"ఒక వేరియబుల్ స్టాటిక్‌గా ప్రకటించబడితే, అప్పుడు వేరియబుల్ యొక్క ఒక కాపీ మాత్రమే ఉంటుంది. కాబట్టి, ఒక సమూహ తరగతి స్థిరంగా ఉంటే, మీరు ఆ తరగతిలోని ఒక వస్తువును మాత్రమే సృష్టించగలరని అర్థం?"

" స్టాటిక్ అనే పదం మిమ్మల్ని ఇక్కడ గందరగోళానికి గురి చేయనివ్వవద్దు. ఒక వేరియబుల్ స్టాటిక్‌గా డిక్లేర్ చేయబడితే, వేరియబుల్‌కు ఒకే ఒక కాపీ మాత్రమే ఉంటుంది అనేది నిజం. కానీ స్టాటిక్ నెస్టెడ్ క్లాస్ అనేది ఈ విషయంలో స్టాటిక్ మెథడ్ లాగా ఉంటుంది. క్లాస్ డిక్లరేషన్‌కు ముందు స్టాటిక్ అనే పదం తరగతి తన బాహ్య తరగతి వస్తువులకు సూచనలను నిల్వ చేయదని సూచిస్తుంది."

"ఆహ్. సాధారణ పద్ధతులు పరోక్షంగా ఆబ్జెక్ట్ రిఫరెన్స్‌ను నిల్వ చేస్తాయి, కానీ స్టాటిక్ పద్ధతులు అలా చేయవు. ఇది స్టాటిక్ క్లాస్‌ల విషయంలో కూడా అంతే, నేను చెప్పింది నిజమేనా, ఎల్లీ?"

"ఖచ్చితంగా. మీ శీఘ్ర అవగాహన అభినందనీయం. స్టాటిక్ నెస్టెడ్ క్లాస్‌లు తమ బయటి తరగతి వస్తువులకు దాచిన సూచనలను కలిగి ఉండవు."

class Zoo
{
 private static int count = 7;
 private int mouseCount = 1;

 public static int getAnimalCount()
 {
  return count;
 }

 public int getMouseCount()
 {
  return mouseCount;
 }

 public static class Mouse
 {
  public Mouse()
  {
  }
   public int getTotalCount()
  {
   return count + mouseCount; // Compilation error.
  }
 }
}

"ఈ ఉదాహరణను జాగ్రత్తగా సమీక్షిద్దాం."

"స్టాటిక్ getAnimalCount పద్ధతి ఏ వేరియబుల్స్ యాక్సెస్ చేయగలదు?"

"స్థిరమైనవి మాత్రమే. ఎందుకంటే ఇది స్థిరమైన పద్ధతి."

"getMouseCount పద్ధతి ఏ వేరియబుల్స్ యాక్సెస్ చేయగలదు?"

"స్టాటిక్ మరియు నాన్-స్టాటిక్ రెండూ. ఇది జూ వస్తువుకు దాచిన సూచన (ఇది) కలిగి ఉంది."

"అది నిజమే. కాబట్టి, స్టాటిక్ నెస్టెడ్ మౌస్ క్లాస్, స్టాటిక్ మెథడ్ లాగా, జూ క్లాస్ స్టాటిక్ వేరియబుల్స్‌ని యాక్సెస్ చేయగలదు, కానీ అది స్టాటిక్ కాని వాటిని యాక్సెస్ చేయదు."

"ఒకే జూ ఆబ్జెక్ట్ సృష్టించబడనప్పటికీ, మేము మౌస్ వస్తువులను సురక్షితంగా సృష్టించగలము. మీరు దీన్ని ఎలా చేయగలరో ఇక్కడ ఉంది:"

class Home
{
 public static void main(String[] args)
 {
  Zoo.Mouse mouse = new Zoo.Mouse();
 }
}

"మౌస్ క్లాస్ నిజానికి చాలా సాధారణ తరగతి. ఇది జూ క్లాస్ లోపల డిక్లేర్ చేయబడి ఉండటం దీనికి రెండు ప్రత్యేక లక్షణాలను ఇస్తుంది."

1) బయటి తరగతి వెలుపల సమూహ తరగతి (మౌస్ క్లాస్ వంటివి) యొక్క వస్తువులను సృష్టించేటప్పుడు, మీరు బయటి తరగతి పేరును పేర్కొనడానికి డాట్ ఆపరేటర్‌ని కూడా ఉపయోగించాలి.

"ఇలా, ఉదాహరణకు: Zoo.Mouse."

2) Zoo.Mouse క్లాస్ మరియు దాని వస్తువులు జూ క్లాస్ యొక్క ప్రైవేట్ స్టాటిక్ వేరియబుల్స్ మరియు మెథడ్స్‌కు యాక్సెస్ కలిగి ఉంటాయి (మౌస్ క్లాస్ కూడా జూ క్లాస్ లోపల డిక్లేర్ చేయబడినందున).

"ఈరోజుకి అంతే."

"కాబట్టి ఒక అదనపు పేరు మరియు అంతేనా?"

"అవును."

"ఇది మొదట కనిపించిన దానికంటే చాలా సులభం."