פולימורפיזם בג'אווה: כיצד להעמיס או לעקוף שיטות

פולימורפיזם בג'אווה: כיצד להעמיס או לעקוף שיטות

עומס ושיטוף שיטות הן שתי הדרכים בהן Java מפגין פולימורפיזם. הפולימורפיזם בא משילוב של שתי מילים יווניות: 'פולי' שפירושו הרבה ו'מורפה 'שמשמעותו צורה. לכן פולימורפיזם מאפשר לשיטות ללבוש צורות רבות.





עקוב אחר מדריך זה כדי ללמוד כיצד להעמיס או לעקוף שיטות ב- Java.





מהי עומס יתר בשיטה?

'עומס שיטות' מתייחס להגדרת שיטות שונות בכיתה עם אותו שם. השיטות חייבות להיות בעלות חתימות שונות. חתימת שיטה היא השילוב של שם השיטה ורשימת הפרמטרים. הוא אינו כולל את סוג ההחזרה.





המהדר יודע באיזו שיטה להשתמש על ידי בדיקת הסוג, מספר הפרמטרים והסדר שבו הם ממוקמים.

קָשׁוּר: חקר ירושה בשפת התכנות של Java



עומס יתר בשיטות מדגים פולימורפיזם בזמן הידור. פירושו של פולימורפיזם בזמן הידור פירושו שמהדר הג'אווה קושר אובייקט לפונקציונאליות שלו בזמן ריצה. המהדר בודק את חתימות השיטה כדי להשיג זאת.

סוג זה של פולימורפיזם ידוע גם ככריכה סטטית או מוקדמת.





עיין בדוגמת העמסת השיטות למטה:

class Arithmetic{
int cube(int x){
return x*x*x;
}
double cube(double x){
return x*x*x;
}
float cube(float x){
return x*x*x;
}
public static void main(String[] args){
Arithmetic myMultiplication = new Arithmetic();
System.out.println('The cube of 5 is ' + myMultiplication.cube(5));
System.out.println('The cube of 5.0 is ' + myMultiplication.cube(5.0));
System.out.println('The cube of 0.5 is ' + myMultiplication.cube(0.5));
}
}

תְפוּקָה:





The cube of 5 is 125
The cube of 5.0 is 125.0
The cube of 0.5 is 0.125

הקוד למעלה מראה כיצד ניתן להשיג קובייה מסוגים שונים ( int , לְהַכפִּיל , לָצוּף ) באותה שיטה.

באופן כללי, עומס יתר של שיטות משמש להגדרת שיטות דומות עם סוגי פרמטרים שונים.

מהי דריסת שיטה?

הכוונה ליישום אחר של שיטה בתת -מחלקה. בוודאי שהשיטה הוגדרה כבר בשיעור ההורים.

שיטת המכריע (כלומר זו בתת -המחלקה) חייבת להיות בעלת אותה חתימת שיטה כמו זו שבמחלקה העל. סוג ההחזרה של שיטת המכריע עשוי להיות זהה או תת -סוג של זה במחלקת העל.

דריסה משמשת בדרך כלל לכלול יישום ספציפי של התנהגות אובייקט בתת -המחלקה.

class Account{
public void message() {
System.out.println('
Thank you for opening an account with us!');
}
public static void main(String args[]) {
Account myAccount = new Account();
Savings mySavings = new Savings();
FixedDeposit myFixedDepo = new FixedDeposit();
myAccount.message();
mySavings.message();
myFixedDepo.message();
}
}
class Savings extends Account {
public void message() {
System.out.println('
Thank you for opening a Savings account with us!');
}
}
class FixedDeposit extends Account {
public void message() {
System.out.println('
Thank you for opening a Fixed Deposit account with us!');
}
}

תְפוּקָה:

Thank you for opening an account with us!
Thank you for opening a Savings account with us!
Thank you for opening a Fixed Deposit account with us!

הדוגמה לעיל מראה כיצד השיטה הוֹדָעָה() מוחלף בתת -המחלקות חיסכון ו הפקדה קבועה . הודעות שונות יוצגו לבעלי חשבון בנק עם חשבון חיסכון ולאלה עם חשבון הפקדה קבועה.

קָשׁוּר: מה שאתה צריך לדעת על שימוש במחרוזות ב- Java

ראוי גם לציין כי דריסת שיטה מדגימה פולימורפיזם בזמן ריצה או שיגור שיטות דינמיות. המשמעות היא שהשיטה להיקרא נפתרת בזמן ריצה ולא בהרכבה.

כדי להימנע משיטול שיטה, השתמש במילת המפתח סופי .

final void message (){
System.out.println('
Thank you for opening an account with us!');
}

כאשר תת -מחלקה מנסה לעקוף אותה, תתרחש שגיאת הידור.

באופן אידיאלי, כל השיטות הנקראות בתוך קונסטרוקטור צריכות להיות סופי . זאת כדי להימנע משינויים לא מכוונים שעלולים להיגרם כתת -המשנה.

לפעמים, ייתכן שיהיה עליך לגשת לשיטה המבוטלת בתוך שיטת הדריסה. אתה יכול להשתמש במילת המפתח סוּפֶּר ואחריו מפעיל הנקודות ( . ) ושם השיטה במקרה כזה.

שקול את סוג העל בעל חיים .

class Animal{
public void move() {
System.out.println('
I can move.');
}
}

להלן תת -סוג, הנקרא דג , זה גובר מהלך לזוז לעבור() :

class Fish extends Animal {
public void move() {
System.out.println('
I can swim.');
super.move();
}
public static void main(String args[]){
Fish Tilapia = new Fish();
Tilapia.move();
}
}

תְפוּקָה:

כיצד לתקן 100% שימוש בדיסק
I can swim.
I can move.

בעת דריסת שיטה, עליך גם להיות מודע לשינוי הגישה המשמש. המשנה בתת -המחלקה צריך להיות בעל רמת נראות זהה או גבוה יותר מאשר במחלקת הבסיס. לדוגמה, אם השיטה במחלקת הבסיס מוגדרת כ מוּגָן , אז שיטת המכריע יכולה להיות מוּגָן אוֹ פּוּמְבֵּי .

קוד פשוט עם פולימורפיזם

דריסת שיטות ועומס יתר חשובות לפשט קוד, וקוד פשוט הוא תרגול טוב.

למה? תארו לעצמכם בסיס קוד מורכב עם יותר נקודות חוץ מאשר בתחנת גרנד סנטרל. עכשיו תארו לעצמכם באג הרסני מתחיל להרוס את העבודה הקשה שלכם מול העיניים שלכם. עליך לבודד את מקור הזיהום, ועליך לעשות זאת במהירות.

בהצלחה, לא פישטת את הקוד שלך ... עכשיו אתה עומד לקבל שיעור אמיתי בקריפטוגרפיה. העסקת מבני נתונים יעילים ועושה מה שאתה יכול כדי לקצר קוד (כגון שמירה על DRY בחשבון) היא ההגנה הטובה ביותר שלך מפני מצב כזה.

הבא ברשימת הלמידה שלך ב- Java אמור לעבוד עם מערכים. הם מבני נתונים חשובים המשמשים לאחסון קבוצות של נקודות נתונים.

לַחֲלוֹק לַחֲלוֹק צִיוּץ אימייל כיצד ליצור ולבצע פעולות במערכים בג'אווה

לומדים ג'אווה? תן למערכים לטפל בנתונים שלך בקלות.

קרא הבא
נושאים קשורים
  • תִכנוּת
  • ג'אווה
  • הדרכות קידוד
על הסופר ג'רום דוידסון(22 מאמרים פורסמו)

ג'רום הוא כותב צוות ב- MakeUseOf. הוא מכסה מאמרים בנושא תכנות ולינוקס. הוא גם חובב קריפטו ותמיד עוקב אחרי תעשיית הקריפטו.

עוד מאת ג'רום דוידסון

הירשם לניוזלטר שלנו

הצטרף לניוזלטר שלנו לקבלת טיפים, סקירות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!

לחצו כאן להרשמה