இரண்டுமே ஒரு மீண்டும் பயன்படுத்துகின்றன, ஆனால் அவை அடிப்படையில் வேறுபட்டவை. = ஒரே பெயர், , ஒரே வகுப்பில், தீர்க்கப்படுகிறது. = ஒரு துணை வகுப்பு மூலம் , தீர்க்கப்படுகிறது.
இரண்டுமே ஒரு மீண்டும் பயன்படுத்துகின்றன, ஆனால் அவை அடிப்படையில் வேறுபட்டவை. = ஒரே பெயர், , ஒரே வகுப்பில், தீர்க்கப்படுகிறது. = ஒரு துணை வகுப்பு மூலம் , தீர்க்கப்படுகிறது.
| ஓவர்லோடிங் | ஓவர்ரைடிங் | |
|---|---|---|
| கையொப்பம் | வேறுபட வேண்டும் (அளவுருக்கள்) | ஒரே மாதிரியாக இருக்க வேண்டும் |
| உறவு | ஒரே வகுப்பு | பெற்றோர் ↔ துணை வகுப்பு |
| தீர்க்கப்பட்டது | தொகுக்கும் நேரம் (நிலை) | இயங்கும் நேரம் (动क) |
| நோக்கம் | வசதி / மாறுபாடுகள் | பல வடிவம் |
class Printer {
void print(String s) { System.out.println(s); }
void print(int n) { System.out.println(n); } // same name, diff param
void print(String s, int times) { /* ... */ }
}
த தொகுப்பான் வாதங்களின் வகைகளின் அடிப்படையில் எந்த printஐ தேர்வு செய்கிறது — பெறுதல் சம்பந்தப்படவில்லை.
class Animal { String speak() { return "..."; } }
class Dog extends Animal {
@Override
String speak() { return "Woof"; } // replaces Animal.speak()
}
Animal a = new Dog();
a.speak(); // "Woof" — runtime picks Dog's version (dynamic dispatch)
பொதுவான பிழை என்பது தற்செயலாக ஓவர்லோடிங் செய்வது ஓவர்ரைடிங் செய்ய விரும்பியபோது (எ.கா. கையொப்பத்தில் தொ输typo). எப்போதும் @Override (Java) அல்லது override (C#) ஐ பயன்படுத்தவும் எனவே தொகுப்பான் அதை பிடிக்கும்.
ஓவர்ரைடிங் பல வடிவத்தின் ஆற்றல் — "ஒரு இடைமுகம், பல நடைமுறைகள்" வேலை செய்வதை சாத்தியமாக்கும் இயங்கும் நேரக் கொட்டை.
வித்தியாசத்தை அறிந்தால் ஒரு கிளாசிக் பிழை தவிர்க்கப்படும்: நீங்கள் பல்வேறு மாற்றியமைக்கப்பட்ட அந்த உண்மையில் ஒரு இரண்டாம் நிலை, ஒருபோதும் அழைக்கப்பாத முறையை உருவாக்கினீர்கள் என்பதை நினைத்தல்.