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அழைக்கப்படுகிறது.

இது மிகவும் வெளிப்படையானது அல்ல. முக்கிய விதியை நினைவில் கொள்ளுங்கள்:

மாறியில் அழைக்கப்படும் முறைகளின் தொகுப்பு மாறியின் வகையால் தீர்மானிக்கப்படுகிறது. மேலும் குறிப்பிட்ட முறை செயல்படுத்தல் என்பது மாறியால் குறிப்பிடப்படும் பொருளின் வகை/வகுப்பால் தீர்மானிக்கப்படுகிறது.

இதை நீங்கள் எப்போதும் சந்திப்பீர்கள், எனவே இதை எவ்வளவு விரைவில் நினைவில் கொள்கிறீர்களோ அவ்வளவு நல்லது.