מהי פונקציה וירטואלית בג'אווה?



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

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

מהי פונקציה וירטואלית בג'אווה?

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





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

כל שיטה לא סטטית בג'אווה היא כברירת מחדל שיטה וירטואלית. ל- Java אין מילת מפתח וירטואלית כמו C ++ אך אנו יכולים להגדיר אותם ולהשתמש בהם למושגים כמו פולימורפיזם בזמן ריצה.



דוגמה לפונקציה וירטואלית

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

class Vehicle {void make () {System.out.println ('heavy duty')}} משאיות מהמחלקה הציבורית מרחיבה את הרכב {void make () {System.out.println ('Vehicle transport for heavy duty')} בטל סטטי ציבורי ראשי (טענות מחרוזת []) {רכב ob1 = משאיות חדשות () ob1.make ()}}
 תְפוּקָה: רכב תחבורה לעבודה כבדה

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

ec2 ליצור מופע מתמונה

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



פונקציה וירטואלית עם ממשקים

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

ממשק רכב {void applyBrakes ()} ממשק אאודי מיישם רכב {void applyBrakes () {System.out.println ('מפסיק הוחל')}}

כאן ApplyBreaks () הוא וירטואלי מכיוון שפונקציות בממשקים נועדו לעקוף.

פונקציה וירטואלית טהורה

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

מחלקה מופשטת כלב {קליפת חלל סופית () {System.out.println ('ווף')} קפיצה ריקנית מופשטת () // זוהי פונקציה וירטואלית טהורה} מחלקה MyDog מרחיבה כלב {קפיצה חלילה () {System.out.println ('קופץ באוויר')}} מחלקה ציבורית רץ {ציבורי ריק ריק סטטי (טענות מחרוזת []) {כלב ob1 = חדש MyDog () ob1.jump ()}}
 תְפוּקָה: קופץ באוויר

כך ניתן להשתמש בפונקציה וירטואלית עם מחלקה מופשטת.

פולימורפיזם בזמן ריצה

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

class Edureka {show public void show () {System.out.println ('welcome to edureka')}}} קורס קורס מרחיב את Edureka {show public public () {System.out.println ('Java Certification Program')} בטל סטטי ציבורי ראשי (מחרוזת טוענת []) {אדוריקה ob1 = קורס חדש () ob1.show ()}}
 תְפוּקָה: קורס הסמכה לג'אווה

נקודות לזכור

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

  • בעזרת מצביע המחלקה הבסיסי ניתן להתייחס לאובייקט המחלקה הנגזרת.

  • במהלך ביצוע התוכנית, מצביע מחלקת הבסיס משמש לכינוי פונקציות המחלקה הנגזרות.

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

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

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

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