1. అయితే అంతే కాదు.

తరగతికి మరో రెండు పద్ధతులను పిలిచే పద్ధతి Cowఉందని అనుకుందాం . printAll()అప్పుడు కోడ్ ఇలా పని చేస్తుంది:

కోడ్ వివరణ
class Cow
{
   public void printAll()
   {
      printColor();
      printName();
   }

   public void printColor ()
   {
      System.out.println("I'm a white whale");
   }

   public void printName()
   {
      System.out.println("I'm a cow");
   }
}

class Whale extends Cow
{
   public void printName()
   {
      System.out.println("I'm a whale");
   }
}
public static void main(String[] args)
{
   Whale whale = new Whale ();
   whale.printAll();
}
స్క్రీన్ అవుట్‌పుట్ ఇలా ఉంటుంది:
I'm a white whale
I'm a whale

printAll()తరగతిలోని పద్ధతిని ఒక వస్తువుపైCow పిలిచినప్పుడు , తరగతి యొక్క పద్ధతి ఉపయోగించబడుతుంది, పద్ధతిలో ఒకటి కాదు .WhaleprintNameWhaleCow

ప్రధాన విషయం ఏమిటంటే పద్ధతి వ్రాయబడిన తరగతి కాదు, కానీ పద్ధతి అని పిలువబడే వస్తువు యొక్క రకం (తరగతి).

నాన్-స్టాటిక్ పద్ధతులు మాత్రమే వారసత్వంగా మరియు భర్తీ చేయబడతాయి. స్టాటిక్ పద్ధతులు వారసత్వంగా పొందబడవు మరియు అందువల్ల భర్తీ చేయలేము.

Whaleవారసత్వం మరియు పద్ధతి ఓవర్‌రైడింగ్‌ని వర్తింపజేసిన తర్వాత తరగతి ఎలా ఉంటుందో ఇక్కడ ఉంది :

class Whale
{
   public void printAll()
   {
      printColor();
      printName();
   }

   public void printColor()
   {
      System.out.println("I'm a white whale");
   }

   public void printName()
   {
      System.out.println("I'm a whale");
   }
}
వారసత్వం మరియు పద్ధతి ఓవర్‌రైడింగ్‌ని వర్తింపజేసిన తర్వాత తరగతి ఎలా ఉంటుందో ఇక్కడ ఉంది : పాత పద్ధతి Whaleగురించి మాకు తెలియదు .printName

2. టైప్ కాస్టింగ్

ఇక్కడ మరింత ఆసక్తికరమైన అంశం ఉంది. ఒక తరగతి దాని పేరెంట్ క్లాస్ యొక్క అన్ని పద్ధతులు మరియు డేటాను వారసత్వంగా పొందుతుంది కాబట్టి, చైల్డ్ క్లాస్ యొక్క ఆబ్జెక్ట్‌కి సంబంధించిన రిఫరెన్స్ పేరెంట్ క్లాస్ (మరియు పేరెంట్ పేరెంట్, మొదలైనవి) వలె ఉండే వేరియబుల్స్‌లో నిల్వ చేయబడుతుంది (కేటాయిస్తారు). తరగతి వరకు అన్ని మార్గం Object). ఉదాహరణ:

కోడ్ వివరణ
public static void main(String[] args)
{
   Whale whale = new Whale();
   whale.printColor();
}
స్క్రీన్ అవుట్‌పుట్ ఇలా ఉంటుంది:
I'm a white whale
public static void main(String[] args)
{
   Cow cow = new Whale();
   cow.printColor();
}
స్క్రీన్ అవుట్‌పుట్ ఇలా ఉంటుంది:
I'm a white whale
public static void main(String[] args)
{
   Object o = new Whale();
   System.out.println(o.toString());
}
స్క్రీన్ అవుట్‌పుట్ ఇలా ఉంటుంది:
Whale@da435a.

పద్ధతి తరగతి toString()నుండి వారసత్వంగా వచ్చిందిObject

ఇది చాలా విలువైన ఆస్తి: కొంచెం తరువాత మీరు దానిని ఆచరణలో ఎలా ఉపయోగించాలో అర్థం చేసుకుంటారు.


3. ఒక వస్తువుపై ఒక పద్ధతిని కాల్ చేయడం

వేరియబుల్‌పై ఒక పద్ధతిని పిలిచినప్పుడు, పద్ధతిని వాస్తవానికి ఒక వస్తువుపై అంటారు. ఈ యంత్రాంగాన్ని డైనమిక్ మెథడ్ డిస్పాచ్ అంటారు.

ఇది ఎలా కనిపిస్తుందో ఇక్కడ ఉంది:

కోడ్ వివరణ
public static void main(String[] args)
{
   Whale whale = new Whale();
   whale.printName();
}
స్క్రీన్ అవుట్‌పుట్ ఇలా ఉంటుంది:
I'm a whale
public static void main(String[] args)
{
   Cow cow = new Whale();
   cow.printName();
}
స్క్రీన్ అవుట్‌పుట్ ఇలా ఉంటుంది:
I'm a whale

printName()పిలవబడే పద్ధతి యొక్క నిర్దిష్ట అమలు — తరగతిలో ఒకటి Cowలేదా ఒకటి Whaleవేరియబుల్ రకం ద్వారా నిర్ణయించబడదు, కానీ వేరియబుల్ సూచించే వస్తువు రకం ద్వారా నిర్ణయించబడుతుంది.

వేరియబుల్ Cowఒక వస్తువుకు సూచనను నిల్వ చేస్తుంది Whaleమరియు printName()తరగతిలో నిర్వచించిన పద్ధతిని Whaleఅంటారు.

ఇది చాలా స్పష్టంగా లేదు. ప్రధాన నియమాన్ని గుర్తుంచుకోండి:

వేరియబుల్‌పై కాల్ చేయడానికి అందుబాటులో ఉన్న పద్ధతుల సమితి వేరియబుల్ రకం ద్వారా నిర్ణయించబడుతుంది. మరియు పిలవబడే నిర్దిష్ట పద్ధతి అమలు వేరియబుల్ ద్వారా సూచించబడిన వస్తువు యొక్క రకం/తరగతి ద్వారా నిర్ణయించబడుతుంది.

మీరు దీన్ని అన్ని సమయాలలో ఎదుర్కొంటారు, కాబట్టి మీరు దీన్ని ఎంత త్వరగా గుర్తుంచుకుంటే అంత మంచిది.