"హలో, అమిగో! రెండ్రోజుల క్రితం నేను ఓవర్‌లోడింగ్ పద్ధతుల గురించి చెప్పాను. మీకు అంతా అర్థమైందా?"

"అవును. నాకు గుర్తుంది. ప్రతి తరగతి పద్ధతి తప్పనిసరిగా ప్రత్యేకంగా ఉండాలి. తరగతికి అదే పేరు మరియు పారామీటర్ రకాలు (మరియు పారామీటర్‌ల క్రమం ముఖ్యమైనది)తో ఏ ఇతర పద్ధతిని కలిగి ఉండకపోతే సభ్యుని పద్ధతి ప్రత్యేకంగా ఉంటుంది."

"చాలా బాగుంది! మీరు ఆ పాఠాన్ని బాగా నేర్చుకున్నారని నేను చూస్తున్నాను. ఈ రోజు నేను ఈ అంశంపై మీ పరిజ్ఞానాన్ని కొంచెం విస్తరించాలనుకుంటున్నాను. ప్రతి సందర్భంలో ఏ పద్ధతిని పిలవాలని మీరు అనుకుంటున్నారు?"

కోడ్
class Cat
{
 public static void print(int n)
 {
  System.out.println(n);
 }
 public static void print(short n)
 {
  System.out.println(n);
 }
 public static void print(Integer n)
 {
  System.out.println(n);
 }
 public static void print(String s)
 {
  System.out.println(s);
 }
public static void main(String[] args)
{
  Cat.print(1);
  Cat.print((byte)1);
  Cat.print("1");
  Cat.print(null);
 }
}

"చెప్పడం కష్టం."

"మొదటి సందర్భంలో, 1 అనేది ఒక పూర్ణాంకం . పూర్ణాంకాన్ని తీసుకునే పద్ధతితో మనకు 100% సరిపోలిక ఉంది. మొదటి శూన్య ముద్రణ(int n) అని పిలవబడుతుంది.

రెండవ సందర్భంలో, బైట్ తీసుకునే పద్ధతి మా వద్ద లేదు. కానీ చిన్న మరియు పూర్ణాంకాన్ని తీసుకునే రెండు పద్ధతులు ఉన్నాయి. రకం విస్తరణ నియమాల ఆధారంగా, ఒక బైట్ మొదట చిన్నదిగా విస్తరించబడుతుంది, ఆపై పూర్ణాంకానికి విస్తరించబడుతుంది. అందువలన, తీర్పు శూన్యమైన ముద్రణ (షార్ట్ n). అంటారు.

మూడవ సందర్భంలో, స్ట్రింగ్ తీసుకునే పద్ధతితో మనకు 100% సరిపోలిక ఉంది. శూన్య ముద్రణ (స్ట్రింగ్ లు). పద్ధతి అంటారు.

నాల్గవ కేసు అస్పష్టంగా ఉంది. nullకి నిర్దిష్ట రకం లేదు. కంపైలర్ ఈ కోడ్‌ను కంపైల్ చేయడానికి నిరాకరిస్తుంది . ఈ సందర్భంలో, మేము మూడవ పద్ధతిని కాల్ చేయడానికి Cat.print((Integer)null) మరియు నాల్గవది కాల్ చేయడానికి Cat.print((String)null) అని వ్రాయాలి ."

"ఇది చాలా సమాచారంగా ఉంది. ధన్యవాదాలు."

"కాల్ చేయడానికి సరైన పద్ధతిని నిర్ణయించేటప్పుడు, రకాలు మాత్రమే విస్తరించగలవని నేను సూచించాలనుకుంటున్నాను. అవి ఇరుకైనవి కావు. ఈ ఉదాహరణను పరిగణించండి:"

కోడ్
class Cat
{
 public static void print(short n)
 {
  System.out.println(n);
 }
 public static void print(Integer n)
 {
  System.out.println(n);
 }

 public static void main(String[] args)
 {
  Cat.print((byte)1);
  Cat.print(1);
 }
}

మొదటి సందర్భంలో, బైట్ రకం చిన్నదిగా విస్తరించబడుతుంది మరియు మొదటి పద్ధతిని పిలుస్తారు: శూన్య ముద్రణ(షార్ట్ n). .

రెండవ సందర్భంలో, పూర్ణాంకం నుండి పూర్ణాంకానికి అవ్యక్తంగా విస్తరించే మార్పిడి ఉంటుంది, ఆపై రెండవ పద్ధతిని పిలుస్తారు: శూన్య ముద్రణ(పూర్ణాంకం n). .

"నేను ఊహించలేదు."

"లేదు, ఇక్కడ నిజమైన ఆశ్చర్యం ఉంది:"

జావా కోడ్ వివరణ
 class Cat
{
 public static void print(Object o)
 {
  System.out.println(o);
 }
 public static void print(String s)
 {
  System.out.println(s);
 }

 public static void main(String[] args)
 {
  Cat.print(1);
  Cat.print(null);
 }
}
మొదటి సందర్భంలో, పూర్ణాంకం పూర్ణాంకానికి విస్తరించబడుతుంది. పూర్ణాంకానికి పద్ధతి లేనందున, అత్యంత అనుకూలమైన పద్ధతి (మరియు పిలవబడేది) శూన్య ముద్రణ (ఆబ్జెక్ట్ o)

రెండవ సందర్భంలో, సంకలన లోపాలు ఏవీ ఉండవు మరియు శూన్య ముద్రణ (స్ట్రింగ్ లు) అని పిలుస్తారు, ఇది కొంతవరకు స్పష్టంగా లేదు.

"అమిగో, అటువంటి సందర్భాలలో ఏ పద్ధతిని పిలుస్తారో తెలుసుకోవడం కోసం ఒక రకం తారాగణం ఆపరేటర్‌ను (మేము «(బైట్)»తో చేసినట్లుగా) పేర్కొనడం ఉత్తమమని మీరు అర్థం చేసుకున్నారని ఆశిస్తున్నాను."

"ఓవర్‌లోడింగ్ పద్ధతుల వల్ల ఎలాంటి సమస్యలు వస్తాయని నేను ఎప్పుడూ ఊహించలేదు. అయితే మీరు రండి. ధన్యవాదాలు రిషీ. ఈ విషయంలో నేను జాగ్రత్తగా ఉంటాను."