logo

שאלות ראיון 300 Core Java | סט 1

90% ביטחון לשאלות ראיון

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

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


1 2 3 4 5

Core Java: יסודות של שאלות ראיון Java


1) מה זה Java?

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


2) מה ההבדלים בין C++ ל-Java?

ההבדלים בין C++ ו-Java ניתנים בטבלה הבאה.

אינדקס השוואה C++Java
בלתי תלוי בפלטפורמה C++ תלוי בפלטפורמה.Java אינה תלויה בפלטפורמה.
משמש בעיקר עבור C++ משמש בעיקר לתכנות מערכת.Java משמשת בעיקר לתכנות יישומים. הוא נמצא בשימוש נרחב ביישומי חלונות, מבוססי אינטרנט, ארגוניים וניידים.
מטרת עיצוב C++ תוכנן עבור תכנות מערכות ויישומים. זה היה הרחבה של שפת תכנות C .Java תוכננה ונוצרה כמתורגמן למערכות הדפסה, אך לאחר מכן הורחבה כתמיכה במחשוב רשת. הוא תוכנן במטרה להיות קל לשימוש ונגיש לקהל רחב יותר.
לך ל C++ תומך בהצהרת goto.Java אינה תומכת בהצהרת goto.
ירושה מרובה C++ תומך בירושה מרובה.Java אינה תומכת בהורשה מרובה דרך הכיתה. ניתן להשיג זאת על ידי ממשקים ב-java .
עומס יתר על המפעיל C++ תומך עומס יתר של המפעיל .Java אינה תומכת בעומס יתר של מפעיל.
מצביעים C++ תומך במצביעים. אתה יכול לכתוב תוכנית מצביע ב-C++.Java תומך במצביע פנימי. עם זאת, אינך יכול לכתוב את תוכנית המצביע ב-java. זה אומר ש-java מוגבלת לתמיכת מצביעים ב-Java.
מהדר ומתורגמן C++ משתמש בקומפיילר בלבד. C++ מורכב ומופעל באמצעות המהדר שממיר קוד מקור לקוד מכונה, כך ש-C++ תלוי בפלטפורמה.Java משתמש במהדר ובמתורגמן שניהם. קוד המקור של Java מומר לבייטקוד בזמן ההידור. המתורגמן מבצע קוד בייט זה בזמן ריצה ומפיק פלט. Java מתפרשת וזו הסיבה שהיא עצמאית בפלטפורמה.
שיחה לפי ערך וקריאה לפי הפניה C++ תומך גם בקריאה לפי ערך וגם בקריאה לפי הפניה.Java תומך בהתקשרות לפי ערך בלבד. אין קריאה לפי הפניה ב-java.
מבנה ואיחוד C++ תומך במבנים ואיגודים.Java אינה תומכת במבנים ואיגודים.
תמיכה בשרשור ל-C++ אין תמיכה מובנית בשרשורים. הוא מסתמך על ספריות של צד שלישי לתמיכה בחוטים.ל-Java יש מובנה פְּתִיל תמיכה.
הערת תיעוד C++ אינו תומך בהערת תיעוד.Java תומכת בהערת תיעוד (/** ... */) ליצירת תיעוד עבור קוד המקור של Java.
מילת מפתח וירטואלית C++ תומך במילת מפתח וירטואלית כך שנוכל להחליט אם לעקוף פונקציה או לא.ל-Java אין מילת מפתח וירטואלית. אנו יכולים לעקוף את כל השיטות הלא סטטיות כברירת מחדל. במילים אחרות, שיטות לא סטטיות הן וירטואליות כברירת מחדל.
מעבר ימני לא חתום >>> C++ אינו תומך באופרטור >>>.ג'אווה תומכת במעבר ימני ללא סימן >>> אופרטור שממלא אפס בחלק העליון עבור המספרים השליליים. עבור מספרים חיוביים, זה עובד כמו אופרטור >>.
עץ ירושה C++ יוצר תמיד עץ ירושה חדש.Java משתמשת תמיד בעץ ירושה בודד מכיוון שכל המחלקות הן הילד של מחלקת Object ב-Java. מחלקת האובייקט היא השורש של ה- יְרוּשָׁה עץ בג'אווה.
חוּמרָה C++ קרוב יותר לחומרה.Java לא כל כך אינטראקטיבי עם חומרה.
מונחה עצמים C++ היא שפה מונחה עצמים. עם זאת, בשפת C, היררכיית שורש בודד אינה אפשרית.Java הוא גם an מונחה עצמים שפה. עם זאת, הכל (למעט סוגים בסיסיים) הוא אובייקט בג'אווה. זוהי היררכיית שורש יחידה שכן הכל נגזר מ-java.lang.Object.

3) רשום את התכונות של שפת התכנות Java.

יש את התכונות הבאות בשפת התכנות Java.

    פָּשׁוּט:ג'אווה קל ללמוד. התחביר של Java מבוסס על C++ מה שמקל על כתיבת התוכנית בה.
    מונחה עצמים:ג'אווה עוקבת אחר הפרדיגמה מונחה עצמים המאפשרת לנו לשמור על הקוד שלנו כשילוב של סוגים שונים של אובייקטים המשלבים נתונים והתנהגות.
    נייד:Java תומכת בגישת קריאה-פעם-כתיבה-בכל מקום. אנחנו יכולים להפעיל את תוכנית Java בכל מחשב. תוכנית Java (.java) מומרת לבייטקוד (.class) שניתן להפעיל בקלות בכל מחשב.
    עצמאית בפלטפורמה:Java היא שפת תכנות עצמאית של פלטפורמה. זה שונה משפות תכנות אחרות כמו C ו-C++ שצריך פלטפורמה לביצוע. Java מגיעה עם הפלטפורמה שלה שבה הקוד שלה מבוצע. Java לא תלויה במערכת ההפעלה שיש להפעיל.
    מְאוּבטָח:Java מאובטחת מכיוון שהיא אינה משתמשת במצביעים מפורשים. Java מספקת גם את הרעיון של טיפול ב-ByteCode ו-Exception, מה שהופך אותו למאובטח יותר.
    חָסוֹן:Java היא שפת תכנות חזקה מכיוון שהיא משתמשת בניהול זיכרון חזק. המושגים כמו איסוף אשפה אוטומטי, טיפול בחריגים וכו' הופכים אותו לחזק יותר.
    אדריכלות ניטראלית:Java היא ניטרלית ארכיטקטונית מכיוון שהיא אינה תלויה בארכיטקטורה. ב-C, גודל סוגי הנתונים עשוי להשתנות בהתאם לארכיטקטורה (32 סיביות או 64 סיביות) שאינה קיימת ב-Java.
    פירשתי:Java משתמשת במתורגמן Just-in-time (JIT) יחד עם המהדר לביצוע התוכנית.
    ביצועים גבוהים:Java מהירה יותר משפות תכנות מפורשנות מסורתיות מכיוון שקוד בייט של Java 'קרוב' לקוד מקורי. זה עדיין קצת יותר איטי משפה מהודרת (למשל, C++).
    ריבוי חוטים:אנו יכולים לכתוב תוכניות Java העוסקות במשימות רבות בבת אחת על ידי הגדרת שרשורים מרובים. היתרון העיקרי של ריבוי השרשורים הוא שהוא לא תופס זיכרון עבור כל שרשור. הוא חולק אזור זיכרון משותף. חוטים חשובים עבור מולטימדיה, יישומי אינטרנט וכו'.
    מופץ:Java מופץ מכיוון שהיא מאפשרת למשתמשים ליצור אפליקציות מבוזרות ב-Java. RMI ו-EJB משמשים ליצירת אפליקציות מבוזרות. תכונה זו של Java מאפשרת לנו לגשת לקבצים על ידי קריאה לשיטות מכל מחשב באינטרנט.
    דִינָמִי:Java היא שפה דינמית. זה תומך בטעינה דינמית של שיעורים. זה אומר שהשיעורים נטענים לפי דרישה. הוא תומך גם בפונקציות משפות האם שלו, כלומר C ו-C++.

4) מה אתה מבין ב-Java Virtual Machine?

Java Virtual Machine הוא מכונה וירטואלית המאפשרת למחשב להפעיל את תוכנית Java. JVM פועל כמו מנוע ריצה הקורא לשיטה הראשית הקיימת בקוד Java. JVM הוא המפרט אשר חייב להיות מיושם במערכת המחשב. קוד Java מורכב על ידי JVM כדי להיות Bytecode שהוא עצמאי במכונה וקרוב לקוד המקורי.


5) מה ההבדל בין JDK, JRE ו-JVM?

JVM

JVM הוא ראשי תיבות של Java Virtual Machine; זהו מכונה מופשטת המספקת את סביבת זמן הריצה שבה ניתן להפעיל Java bytecode. זהו מפרט המפרט את פעולת Java Virtual Machine. היישום שלו סופק על ידי אורקל וחברות אחרות. היישום שלו ידוע בשם JRE.

JVMs זמינים עבור פלטפורמות חומרה ותוכנה רבות (לכן JVM תלוי בפלטפורמה). זהו מופע זמן ריצה שנוצר כאשר אנו מריצים את מחלקת Java. ישנם שלושה מושגים של JVM: מפרט, יישום ומופע.

JRE

JRE ראשי תיבות של Java Runtime Environment. זה היישום של JVM. Java Runtime Environment היא קבוצה של כלי תוכנה המשמשים לפיתוח יישומי Java. הוא משמש כדי לספק את סביבת זמן הריצה. זה היישום של JVM. זה קיים פיזית. הוא מכיל קבוצה של ספריות + קבצים אחרים ש-JVM משתמש בהם בזמן ריצה.

JDK

JDK הוא ראשי תיבות של Java Development Kit. זוהי סביבת פיתוח תוכנה המשמשת לפיתוח אפליקציות ויישומי Java. זה קיים פיזית. הוא מכיל כלי פיתוח + JRE. JDK הוא יישום של כל אחת מפלטפורמות Java הנתונות להלן ששוחררו על ידי Oracle Corporation:

  • פלטפורמת Java מהדורה סטנדרטית
  • Enterprise Edition Java Platform
  • Micro Edition Java Platform
פרטים נוספים.

6) כמה סוגים של אזורי זיכרון מוקצים על ידי JVM?

סוגים רבים:

    אזור מחלקה (שיטה):Class Area מאחסן מבנים לפי מחלקה כגון מאגר קבוע של זמן הריצה, שדה, נתוני שיטה והקוד של המתודות.ערימה:זהו אזור נתוני זמן הריצה שבו הזיכרון מוקצה לאובייקטיםלַעֲרוֹם:Java Stack מאחסנת מסגרות. היא מכילה משתנים מקומיים ותוצאות חלקיות, ומשחקת חלק בהפעלת השיטה והחזרה. לכל שרשור יש ערימת JVM פרטית, שנוצרה במקביל לשרשור. מסגרת חדשה נוצרת בכל פעם שמתודה מופעלת. מסגרת נהרסת כאשר הפעלת השיטה שלה מסתיימת.רישום מונה תוכניות:פנקס PC (מונה תוכניות) מכיל את הכתובת של הוראת המכונה הווירטואלית של Java המתבצעת כעת.מחסנית שיטה מקורית:הוא מכיל את כל השיטות המקוריות המשמשות באפליקציה.
פרטים נוספים.

7) מהו מהדר JIT?

מהדר Just-In-Time (JIT): הוא משמש לשיפור הביצועים. JIT מרכיב חלקים מקוד הבתים שיש להם פונקציונליות דומה בו-זמנית, ומכאן מקטין את משך הזמן הדרוש להידור. כאן המונח מהדר מתייחס למתרגם ממערך ההוראות של מכונה וירטואלית של Java (JVM) למערכת ההוראות של מעבד ספציפי.


8) מהי הפלטפורמה?

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


9) מהם ההבדלים העיקריים בין פלטפורמת Java לפלטפורמות אחרות?

ישנם ההבדלים הבאים בין פלטפורמת Java לפלטפורמות אחרות.

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

10) מה נותן לג'אווה את אופי ה'כתוב פעם אחת והפעל בכל מקום'?

קוד הבתים. מהדר Java ממיר את תוכניות ה-Java לקובץ הכיתה (Byte Code) שהוא שפת הביניים בין קוד המקור לקוד המכונה. קוד בייט זה אינו ספציפי לפלטפורמה וניתן להפעיל אותו בכל מחשב.


11) מהו classloader?

Classloader היא תת-מערכת של JVM המשמשת לטעינת קבצי מחלקה. בכל פעם שאנו מפעילים את תוכנית ה-Java, היא נטען תחילה על ידי ה-classloader. ישנם שלושה מטענים מובנים ב-Java.

    Bootstrap ClassLoader: זהו ה-classloader הראשון שהוא סופר-class של Extension classloader. זה טוען את rt.jar קובץ המכיל את כל קבצי המחלקה של Java Standard Edition כמו מחלקות חבילות java.lang, מחלקות חבילות java.net, מחלקות חבילות java.util, מחלקות חבילות java.io, מחלקות חבילות java.sql וכו'.הרחבה ClassLoader: זהו מטעין הכיתה הילד של Bootstrap ומטען הכיתה האב של System classloader. זה טוען את קבצי הצנצנת שנמצאים בפנים $JAVA_HOME/jre/lib/ext מַדרִיך.מערכת/יישום ClassLoader: זהו ה-Classloader הילד של Extension classloader. זה טוען את קבצי המחלקה מה-classpath. כברירת מחדל, נתיב הכיתה מוגדר לספרייה הנוכחית. אתה יכול לשנות את ה-classpath באמצעות מתג '-cp' או '-classpath'. זה ידוע גם בשם Application classloader.

12) האם שם קובץ .java ריק הוא שם קובץ מקור חוקי?

כן, Java מאפשר לשמור את קובץ ה-Java שלנו על ידי .java רק, אנחנו צריכים לקמפל אותו על ידי javac .java ולרוץ על ידי שם כיתת java ניקח דוגמה פשוטה:

 //save by .java only class A{ public static void main(String args[]){ System.out.println('Hello java'); } } //compile by javac .java //run by java A 

להרכיב אותו על ידי javac .java

להפעיל אותו java A


13) האם מחיק, הבא, ראשי, יציאה או ריק מילת מפתח ב-java?

לא.


14) אם אני לא מספק ארגומנטים כלשהם בשורת הפקודה, אז מה הערך המאוחסן במערך String יועבר למתודה main(), ריקה או NULL?

זה ריק, אבל לא ריק.


15) מה אם אני כותב ריק ציבורי סטטי במקום ריק סטטי ציבורי?

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


16) מהו ערך ברירת המחדל של המשתנים המקומיים?

המשתנים המקומיים אינם מאותחלים לשום ערך ברירת מחדל, לא פרימיטיביים ולא הפניות לאובייקט.


17) מהם מפרטי הגישה השונים ב-Java?

ב-Java, מפרטי גישה הם מילות המפתח המשמשות להגדרת היקף הגישה של השיטה, המחלקה או המשתנה. ב-Java, ישנם ארבעה מפרטי גישה המפורטים להלן.

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

18) מה המטרה של שיטות ומשתנים סטטיים?

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

לדוגמה, בכיתה המדמה את אוסף הסטודנטים במכללה, שם המכללה הוא התכונה המשותפת לכל הסטודנטים. לפיכך, שם המכללה יוגדר כ סטָטִי .


19) מהם היתרונות של חבילות ב-Java?

ישנם יתרונות שונים של הגדרת חבילות ב-Java.

  • חבילות נמנעות מהתנגשויות השמות.
  • החבילה מספקת בקרת גישה קלה יותר.
  • אנחנו יכולים גם לקבל את השיעורים הנסתרים שאינם גלויים בחוץ ומשמשים את החבילה.
  • קל יותר לאתר את הכיתות הקשורות.

20) מהו הפלט של תוכנית Java הבאה?

 class Test { public static void main (String args[]) { System.out.println(10 + 20 + 'Javatpoint'); System.out.println('Javatpoint' + 10 + 20); } } 

הפלט של הקוד לעיל יהיה

 30Javatpoint Javatpoint1020 

הֶסבֵּר

במקרה הראשון, 10 ו-20 מטופלים כמספרים ומוסיפים להיות 30. כעת, הסכום שלהם 30 מטופל כמחרוזת ומשורשר עם המחרוזת Javatpoint . לכן, הפלט יהיה 30Javatpoint .

במקרה השני, המחרוזת Javatpoint משורשרת עם 10 כדי להיות המחרוזת Javatpoint10 אשר לאחר מכן ישושר עם 20 להיות Javatpoint1020 .


21) מהו הפלט של תוכנית Java הבאה?

 class Test { public static void main (String args[]) { System.out.println(10 * 20 + 'Javatpoint'); System.out.println('Javatpoint' + 10 * 20); } } 

הפלט של הקוד לעיל יהיה

 200Javatpoint Javatpoint200 

הֶסבֵּר

במקרה הראשון, המספרים 10 ו-20 יוכפלו תחילה ולאחר מכן התוצאה 200 מטופלת כמחרוזת ומשורשרת עם המחרוזת Javatpoint לייצר את הפלט 200Javatpoint .

במקרה השני, המספרים 10 ו-20 יוכפלו תחילה ל-200 מכיוון שהקדימות של הכפל גבוהה מהחיבור. התוצאה 200 תטופל כמחרוזת ותשורשר עם המחרוזת Javatpoint לייצר את הפלט כ Javatpoint200 .


22) מהו הפלט של תוכנית Java הבאה?

 class Test { public static void main (String args[]) { for(int i=0; 0; i++) { System.out.println('Hello Javatpoint'); } } } 

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


Core Java - OOPs Concepts: OOPs ראשוני שאלות ראיון

ניתנות יותר מ-50 שאלות לראיון OOPs (תכנות ומערכת ממוקדי אובייקט). עם זאת, הם סווגו בחלקים רבים כגון שאלות ראיון בנאים, שאלות ראיון סטטיות, שאלות ראיון ירושה, שאלת ראיון הפשטה, שאלות ראיון פולימורפיזם וכו' להבנה טובה יותר.


23) מהי פרדיגמה מונחה עצמים?

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

  • עוקב אחר הגישה מלמטה למעלה בעיצוב התוכנית.
  • התמקד בנתונים עם שיטות לפעול על נתוני האובייקט
  • כולל את המושג כמו Encapsulation והפשטה שמסתיר את המורכבות מהמשתמש ומציג רק פונקציונליות.
  • מיישם את הגישה בזמן אמת כמו ירושה, הפשטה וכו'.
  • הדוגמאות לפרדיגמה מונחה עצמים הן C++, Simula, Smalltalk, Python, C# וכו'.

24) מהו חפץ?

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


25) מה ההבדל בין שפת תכנות מונחה עצמים לשפת תכנות מבוססת עצמים?

ישנם ההבדלים הבסיסיים הבאים בין שפה מוכוונת אובייקט לשפה מבוססת אובייקט.

  • שפות מונחה עצמים עוקבות אחר כל המושגים של OOPs ואילו השפה מבוססת האובייקטים לא עוקבת אחר כל המושגים של OOPs כמו ירושה ופולימורפיזם.
  • לשפות מונחות אובייקט אין את האובייקטים המובנים ואילו לשפות מבוססות אובייקטים יש את האובייקטים המובנים, למשל, ל-JavaScript יש אובייקט חלון.
  • דוגמאות לתכנות מונחה עצמים הן Java, C#, Smalltalk וכו' ואילו הדוגמאות של שפות מבוססות עצמים הן JavaScript, VBScript וכו'.

26) מה יהיה הערך ההתחלתי של הפניה לאובייקט המוגדר כמשתנה מופע?

כל הפניות לאובייקט מאותחלות ל-null ב-Java.


Core Java - OOPs Concepts: שאלות ראיון לבנות


27) מהו הקונסטרוקטור?

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

פרטים נוספים.

28) בכמה סוגי בנאים משתמשים ב-Java?

בהתבסס על הפרמטרים שהועברו בבנאים, ישנם שני סוגים של בנאים ב-Java.

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

29) מהי המטרה של בנאי ברירת מחדל?

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

 class Student3{ int id; String name; void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student3 s1=new Student3(); Student3 s2=new Student3(); s1.display(); s2.display(); } } 
בדוק את זה עכשיו

תְפוּקָה:

 0 null 0 null 

הֶסבֵּר: במחלקה שלמעלה, אינך יוצר שום בנאי, אז המהדר מספק לך בנאי ברירת מחדל. כאן מסופקים ערכי 0 ו- null על ידי בנאי ברירת המחדל.

בנאי ברירת המחדל של Java
פרטים נוספים.

30) האם בנאי מחזיר ערך כלשהו?

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


31)האם הבנאי עובר בירושה?

לא, הבנאי אינו עובר בירושה.


32) האם אתה יכול לעשות קונסטרוקטור גמר?

לא, הבנאי לא יכול להיות סופי.

שילפה שטי

33) האם נוכל להעמיס על הבנאים?

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

 class Test { int i; public Test(int k) { i=k; } public Test(int k, int m) { System.out.println('Hi I am assigning the value max(k, m) to i'); if(k>m) { i=k; } else { i=m; } } } public class Main { public static void main (String args[]) { Test test1 = new Test(10); Test test2 = new Test(12, 15); System.out.println(test1.i); System.out.println(test2.i); } } 

בתוכנית לעיל, מבחן הבנאי עמוס בבנאי אחר. בקריאה הראשונה לבנאי, הבנאי עם ארגומנט אחד נקרא, ו-i יאתחל עם הערך 10. עם זאת, בקריאה השנייה לבנאי, הבנאי עם 2 הארגומנטים נקרא, ו-i יאתחל. עם הערך 15.


34) מה אתה מבין ב-Copy constructor ב-Java?

אין בנאי העתקה ב-java. עם זאת, אנו יכולים להעתיק את הערכים מאובייקט אחד למשנהו כמו בנאי העתקה ב-C++.

ישנן דרכים רבות להעתיק את הערכים של אובייקט אחד לאחר ב-java. הם:

  • על ידי קונסטרוקטור
  • על ידי הקצאת ערכים של אובייקט אחד לאחר
  • לפי שיטת clone() של מחלקה Object

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

 //Java program to initialize the values from one object to another class Student6{ int id; String name; //constructor to initialize integer and string Student6(int i,String n){ id = i; name = n; } //constructor to initialize another object Student6(Student6 s){ id = s.id; name =s.name; } void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student6 s1 = new Student6(111,'Karan'); Student6 s2 = new Student6(s1); s1.display(); s2.display(); } } 
בדוק את זה עכשיו

תְפוּקָה:

 111 Karan 111 Karan 

35) מהם ההבדלים בין הבנאים והשיטות?

ישנם הבדלים רבים בין בנאים ושיטות. הם ניתנים להלן.

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

בוני ג'אווה לעומת שיטות

36) מהו הפלט של תוכנית Java הבאה?

 public class Test { Test(int a, int b) { System.out.println('a = '+a+' b = '+b); } Test(int a, float b) { System.out.println('a = '+a+' b = '+b); } public static void main (String args[]) { byte a = 10; byte b = 15; Test test = new Test(a,b); } } 

הפלט של התוכנית הבאה הוא:

 a = 10 b = 15 

כאן, סוג הנתונים של המשתנים a ו-b, כלומר, byte מקודם ל-int, ונקרא הבנאי עם הפרמטר הראשון עם שני הפרמטרים השלמים.


37) מהו הפלט של תוכנית Java הבאה?

 class Test { int i; } public class Main { public static void main (String args[]) { Test test = new Test(); System.out.println(test.i); } } 

הפלט של התוכנית הוא 0 מכיוון שהמשתנה i מאותחל ל-0 באופן פנימי. מכיוון שאנו יודעים שבנאי ברירת מחדל מופעל באופן מרומז אם אין בנאי במחלקה, המשתנה i מאותחל ל-0 מכיוון שאין בנאי במחלקה.


38) מהו הפלט של תוכנית Java הבאה?

 class Test { int test_a, test_b; Test(int a, int b) { test_a = a; test_b = b; } public static void main (String args[]) { Test test = new Test(); System.out.println(test.test_a+' '+test.test_b); } } 

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


Core Java - OOPs Concepts: מילת מפתח סטטית ראיון שאלות


39) מהו המשתנה הסטטי?

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

 //Program of static variable class Student8{ int rollno; String name; static String college ='ITS'; Student8(int r,String n){ rollno = r; name = n; } void display (){System.out.println(rollno+' '+name+' '+college);} public static void main(String args[]){ Student8 s1 = new Student8(111,'Karan'); Student8 s2 = new Student8(222,'Aryan'); s1.display(); s2.display(); } } 
בדוק את זה עכשיו
 Output:111 Karan ITS 222 Aryan ITS 

פרטים נוספים.

40) מהי השיטה הסטטית?

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

41) מהן ההגבלות המוחלות על שיטות Java סטטיות?

שתי הגבלות עיקריות חלות על השיטות הסטטיות.

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

42) מדוע השיטה העיקרית היא סטטית?

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


43) האם נוכל לעקוף את השיטות הסטטיות?

לא, אנחנו לא יכולים לעקוף שיטות סטטיות.

44) מהו הבלוק הסטטי?

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

 class A2{ static{System.out.println('static block is invoked');} public static void main(String args[]){ System.out.println('Hello main'); } } 
בדוק את זה עכשיו
 Output: static block is invoked Hello main 

פרטים נוספים.

45) האם נוכל להפעיל תוכנית ללא שיטת main()?

תשובה) לא, זה היה אפשרי לפני JDK 1.7 באמצעות הבלוק הסטטי. מאז JDK 1.7, זה לא אפשרי. פרטים נוספים.


46) מה אם השינוי הסטטי יוסר מהחתימה של השיטה הראשית?

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


47) מה ההבדל בין שיטה סטטית (מחלקה) לשיטת מופע?

שיטה סטטית או מחלקהשיטת מופע
1)שיטה המוצהרת כסטטית ידועה בשם השיטה הסטטית.שיטה שאינה מוכרזת כסטטית ידועה כשיטת המופע.
2) אנחנו לא צריכים ליצור את האובייקטים כדי לקרוא לשיטות הסטטיות.האובייקט נדרש לקרוא לשיטות המופע.
3) לא ניתן לגשת לחברים שאינם סטטיים (מופע) בהקשר הסטטי (שיטה סטטית, בלוק סטטי ומחלקה מקוננת סטטית) ישירות.ניתן לגשת לשניהם משתנים סטטיים ולא סטטיים בשיטות מופע.
4)לדוגמה: public static int cube(int n){ return n*n*n;}לדוגמה: public void msg(){...}.

48) האם אנחנו יכולים להפוך בנאים סטטיים?

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


49) האם נוכל להפוך את השיטות המופשטות לסטטיות ב-Java?

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


50) האם נוכל להכריז על המשתנים והשיטות הסטטיות במחלקה מופשטת?

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

 abstract class Test { static int i = 102; static void TestMethod() { System.out.println('hi !! I am good !!'); } } public class TestClass extends Test { public static void main (String args[]) { Test.TestMethod(); System.out.println('i = '+Test.i); } } 

תְפוּקָה

 hi !! I am good !! i = 102 

Core Java - מושגי OOPs: שאלות ראיון בירושה


51) מה זה זֶה מילת מפתח ב-java?

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

java מילת מפתח זו
פרטים נוספים.

52) מהם השימושים העיקריים של מילת מפתח זו?

יש את השימושים הבאים של זֶה מילת מפתח.

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

53) האם נוכל להקצות את ההפניה ל זֶה מִשְׁתַנֶה?

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

 public class Test { public Test() { this = null; System.out.println('Test class constructor called'); } public static void main (String args[]) { Test t = new Test(); } } 

תְפוּקָה

 Test.java:5: error: cannot assign a value to final variable this this = null; ^ 1 error 

54) יכול זֶה יש להשתמש במילת המפתח כדי להפנות חברים סטטיים?

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

 public class Test { static int i = 10; public Test () { System.out.println(this.i); } public static void main (String args[]) { Test t = new Test(); } } 

תְפוּקָה

 10 

55) כיצד ניתן לבצע שרשור בנאים באמצעות מילת מפתח זו?

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

 public class Employee { int id,age; String name, address; public Employee (int age) { this.age = age; } public Employee(int id, int age) { this(age); this.id = id; } public Employee(int id, int age, String name, String address) { this(id, age); this.name = name; this.address = address; } public static void main (String args[]) { Employee emp = new Employee(105, 22, 'Vikas', 'Delhi'); System.out.println('ID: '+emp.id+' Name:'+emp.name+' age:'+emp.age+' address: '+emp.address); } } 

תְפוּקָה

 ID: 105 Name:Vikas age:22 address: Delhi 

56) מהם היתרונות בהעברת זה למתודה במקום לאובייקט המחלקה הנוכחי עצמו?

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

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

57) מהי הירושה?

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

ישנם חמישה סוגי ירושה בג'אווה.

  • ירושה חד-מפלסית
  • ירושה רב-שכבתית
  • ירושה מרובה
  • ירושה היררכית
  • ירושה היברידית

ירושה מרובה אינה נתמכת ב-Java דרך הכיתה.

פרטים נוספים.

58) מדוע משתמשים בירושה ב-Java?

ישנם יתרונות שונים של שימוש בירושה ב-Java המובאים להלן.

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

59) איזו כיתה היא כיתה העל לכל הכיתות?

מחלקת האובייקט היא מחלקת העל של כל המחלקות האחרות בג'אווה.


60) מדוע ירושה מרובה אינה נתמכת ב-java?

כדי להפחית את המורכבות ולפשט את השפה, ירושה מרובה אינה נתמכת ב-java. שקול תרחיש שבו A, B ו-C הם שלוש מחלקות. מחלקה C יורשת את מחלקות A ו-B. אם למחלקות A ו-B יש אותה שיטה ואתה קורא לה מ- child class object, תהיה אי בהירות לקרוא לשיטה של ​​מחלקה A או B.

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

 class A{ void msg(){System.out.println('Hello');} } class B{ void msg(){System.out.println('Welcome');} } class C extends A,B{//suppose if it were Public Static void main(String args[]){ C obj=new C(); obj.msg();//Now which msg() method would be invoked? } } 
בדוק את זה עכשיו
 Compile Time Error 

61) מהי צבירה?

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

Address.java

 public class Address { String city,state,country; public Address(String city, String state, String country) { this.city = city; this.state = state; this.country = country; } } 

Employee.java

 public class Emp { int id; String name; Address address; public Emp(int id, String name,Address address) { this.id = id; this.name = name; this.address=address; } void display(){ System.out.println(id+' '+name); System.out.println(address.city+' '+address.state+' '+address.country); } public static void main(String[] args) { Address address1=new Address('gzb','UP','india'); Address address2=new Address('gno','UP','india'); Emp e=new Emp(111,'varun',address1); Emp e2=new Emp(112,'arun',address2); e.display(); e2.display(); } } 

תְפוּקָה

 111 varun gzb UP india 112 arun gno UP india 

62) מהו קומפוזיציה?

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


63) מה ההבדל בין צבירה להרכב?

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


64) מדוע Java לא תומך במצביעים?

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


65) מה זה סופר בג'אווה?

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

 class Animal{ Animal(){System.out.println('animal is created');} } class Dog extends Animal{ Dog(){ System.out.println('dog is created'); } } class TestSuper4{ public static void main(String args[]){ Dog d=new Dog(); } } 
בדוק את זה עכשיו

תְפוּקָה:

 animal is created dog is created 
פרטים נוספים.

66) כיצד ניתן לבצע שרשור בנאים באמצעות מילת המפתח העל?

 class Person { String name,address; int age; public Person(int age, String name, String address) { this.age = age; this.name = name; this.address = address; } } class Employee extends Person { float salary; public Employee(int age, String name, String address, float salary) { super(age,name,address); this.salary = salary; } } public class Test { public static void main (String args[]) { Employee e = new Employee(22, 'Mukesh', 'Delhi', 90000); System.out.println('Name: '+e.name+' Salary: '+e.salary+' Age: '+e.age+' Address: '+e.address); } } 

תְפוּקָה

 Name: Mukesh Salary: 90000.0 Age: 22 Address: Delhi 

67) מהם השימושים העיקריים של מילת המפתח העל?

יש את השימושים הבאים במילת מפתח סופר.

  • ניתן להשתמש ב- super כדי להתייחס למשתנה המופע של מחלקת האב המיידי.
  • ניתן להשתמש ב-super כדי להפעיל את שיטת מחלקת האב המיידית.
  • super() יכול לשמש כדי להפעיל את בנאי מחלקות האב המיידי.

68) מה ההבדלים בין מילת מפתח זו למילת מפתח העל?

ישנם ההבדלים הבאים בין מילת מפתח זו למילת מפתח העל.

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

69) מהו הפלט של תוכנית Java הבאה?

 class Person { public Person() { System.out.println('Person class constructor called'); } } public class Employee extends Person { public Employee() { System.out.println('Employee class constructor called'); } public static void main (String args[]) { Employee e = new Employee(); } } 

תְפוּקָה

 Person class constructor called Employee class constructor called 

הֶסבֵּר

ה- super() מופעל באופן מרומז על ידי המהדר אם אין super() או this() כלולים במפורש בתוך בנאי המחלקה הנגזרת. לכן, במקרה זה, הבנאי המחלקה Person נקרא תחילה ולאחר מכן נקרא הבנאי המחלקה Employee.


70) האם אתה יכול להשתמש ב() זה ובסופר() שניהם בבנאי?

לא, כי this() ו- super() חייבים להיות ההצהרה הראשונה ב-class constructor.

דוגמא:

 public class Test{ Test() { super(); this(); System.out.println('Test class object is created'); } public static void main(String []args){ Test t = new Test(); } } 

תְפוּקָה:

 Test.java:5: error: call to this must be first statement in constructor 

71) מהו שיבוט אובייקטים?

שיבוט האובייקט משמש ליצירת העותק מדויק של אובייקט. שיטת clone() של המחלקה Object משמשת לשכפול אובייקט. ה java.lang.ניתן לשכפול הממשק חייב להיות מיושם על ידי המחלקה שאת שיבוט האובייקטים שלה אנחנו רוצים ליצור. אם אנחנו לא מיישמים ממשק ניתן לשכפול, שיטת clone() מייצרת CloneNotSupportedException.

 protected Object clone() throws CloneNotSupportedException 
פרטים נוספים.

Core Java - OOPs Concepts: שיטה עומס יתר שאלות ראיון


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

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

  • על ידי שינוי מספר הארגומנטים
  • על ידי שינוי סוג הנתונים של הארגומנטים

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

פרטים נוספים.

73) מדוע העמסת יתר של השיטה אינה אפשרית על ידי שינוי סוג ההחזרה ב-java?

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

 class Adder{ static int add(int a,int b){return a+b;} static double add(int a,int b){return a+b;} } class TestOverloading3{ public static void main(String[] args){ System.out.println(Adder.add(11,11));//ambiguity }} 
בדוק את זה עכשיו

תְפוּקָה:

 Compile Time Error: method add(int, int) is already defined in class Adder 
פרטים נוספים.

74) האם נוכל להעמיס על השיטות על ידי הפיכתן לסטטיות?

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

 public class Animal { void consume(int a) { System.out.println(a+' consumed!!'); } static void consume(int a) { System.out.println('consumed static '+a); } public static void main (String args[]) { Animal a = new Animal(); a.consume(10); Animal.consume(20); } } 

תְפוּקָה

 Animal.java:7: error: method consume(int) is already defined in class Animal static void consume(int a) ^ Animal.java:15: error: non-static method consume(int) cannot be referenced from a static context Animal.consume(20); ^ 2 errors 

75) האם נוכל להעמיס על שיטת main()?

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

פרטים נוספים.

76) מהי עומס יתר בשיטה בקידום סוג?

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

עומס יתר בשיטת Java עם קידום סוג

כפי שמוצג בתרשים לעיל, ניתן לקדם את הבתים לקצר, int, ארוך, צף או כפול. ניתן לקדם את סוג הנתונים הקצר ל-int, long, float או double. ניתן לקדם את ה-char datatype ל-int, long, float או double וכן הלאה. שקול את הדוגמה הבאה.

 class OverloadingCalculation1{ void sum(int a,long b){System.out.println(a+b);} void sum(int a,int b,int c){System.out.println(a+b+c);} public static void main(String args[]){ OverloadingCalculation1 obj=new OverloadingCalculation1(); obj.sum(20,20);//now second int literal will be promoted to long obj.sum(20,20,20); } } 
בדוק את זה עכשיו

תְפוּקָה

 40 60 

77) מהו הפלט של תוכנית Java הבאה?

 class OverloadingCalculation3{ void sum(int a,long b){System.out.println('a method invoked');} void sum(long a,int b){System.out.println('b method invoked');} public static void main(String args[]){ OverloadingCalculation3 obj=new OverloadingCalculation3(); obj.sum(20,20);//now ambiguity } } 

תְפוּקָה

 OverloadingCalculation3.java:7: error: reference to sum is ambiguous obj.sum(20,20);//now ambiguity ^ both method sum(int,long) in OverloadingCalculation3 and method sum(long,int) in OverloadingCalculation3 match 1 error 

הֶסבֵּר

ישנן שתי שיטות המוגדרות באותו שם, כלומר סכום. השיטה הראשונה מקבלת את הטיפוס השלם והארוך ואילו השיטה השנייה מקבלת את הסוג הארוך ואת הסוג השלם. הפרמטר שעבר שהם a = 20, b = 20. איננו יכולים לדעת איזו שיטה תיקרא מכיוון שלא מוזכרת הבחנה ברורה בין מילולי של מספר שלם לבין מילולי ארוך. זה המקרה של אי בהירות. לכן, המהדר יזרוק שגיאה.


Core Java - OOPs Concepts: שיטה עוקפת שאלות ראיון


78) מהי עקיפת השיטה:

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

כללים לעקוף שיטה

  • השיטה חייבת להיות באותו שם כמו במחלקת האב.
  • המתודה חייבת להיות בעלת אותה חתימה כמו במחלקת האב.
  • לשתי מחלקות יש קשר IS-A ביניהן.
פרטים נוספים.


79) האם נוכל לעקוף את השיטה הסטטית?

לא, אתה לא יכול לעקוף את המתודה הסטטית מכיוון שהם חלק מהמחלקה, לא האובייקט.


80) מדוע איננו יכולים לעקוף את השיטה הסטטית?

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


81) האם נוכל לעקוף את השיטה העמוסה?

כן.


82) הבדל בין עומס יתר ועקיפה של השיטה.

עומס יתר של שיטהעקיפת שיטה
1) העמסת יתר של השיטה מגבירה את קריאות התוכנית.עקיפת שיטה מספקת את היישום הספציפי של השיטה שכבר מסופקת על ידי מחלקת העל שלה.
2) עומס יתר של השיטה מתרחש בתוך המחלקה.עקיפת שיטה מתרחשת בשתי מחלקות שיש ביניהן קשר IS-A.
3) במקרה זה, הפרמטרים חייבים להיות שונים.במקרה זה, הפרמטרים חייבים להיות זהים.

83) האם נוכל לעקוף את השיטות הפרטיות?

לא, אנחנו לא יכולים לעקוף את השיטות הפרטיות מכיוון שהיקף השיטות הפרטיות מוגבל למחלקה ואיננו יכולים לגשת אליהן מחוץ לכיתה.


84) האם נוכל לשנות את היקף השיטה הנדחת בתת המחלקה?

כן, אנחנו יכולים לשנות את היקף השיטה הנדחקת בתת המחלקה. עם זאת, עלינו לשים לב שאיננו יכולים להפחית את הנגישות של השיטה. יש להקפיד על הנקודה הבאה תוך כדי שינוי נגישות השיטה.

  • ניתן לשנות את הפרטיות ל'מוגן', לציבורי או לברירת מחדל.
  • ניתן לשנות את המוגן לציבורי או לברירת מחדל.
  • ניתן לשנות את ברירת המחדל לציבורי.
  • הציבור תמיד יישאר ציבורי.

85) האם נוכל לשנות את פסקת ה-Throws של שיטת superclass תוך כדי עקיפה שלו ב-subclass?

כן, אנו יכולים לשנות את פסקת ה-Throws של שיטת superclass תוך דריסת ה-sup-class שלו ב-subclass. עם זאת, ישנם כמה כללים שיש לעקוב אחריהם תוך ביטול במקרה של טיפול בחריגים.

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

86) מהו הפלט של תוכנית Java הבאה?

 class Base { void method(int a) { System.out.println('Base class method called with integer a = '+a); } void method(double d) { System.out.println('Base class method called with double d ='+d); } } class Derived extends Base { @Override void method(double d) { System.out.println('Derived class method called with double d ='+d); } } public class Main { public static void main(String[] args) { new Derived().method(10); } } 

תְפוּקָה

 Base class method called with integer a = 10 

הֶסבֵּר

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

87) האם יש לך פונקציות וירטואליות ב-Java?

כן, כל הפונקציות ב-Java הן וירטואליות כברירת מחדל.


88) מהו סוג החזר קווריאנטי?

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

 class A{ A get(){return this;} } class B1 extends A{ B1 get(){return this;} void message(){System.out.println('welcome to covariant return type');} public static void main(String args[]){ new B1().get().message(); } } 
בדוק את זה עכשיו
 Output: welcome to covariant return type 
פרטים נוספים.

89) מהו הפלט של תוכנית Java הבאה?

 class Base { public void baseMethod() { System.out.println('BaseMethod called ...'); } } class Derived extends Base { public void baseMethod() { System.out.println('Derived method called ...'); } } public class Test { public static void main (String args[]) { Base b = new Derived(); b.baseMethod(); } } 

תְפוּקָה

 Derived method called ... 

הֶסבֵּר

השיטה של ​​מחלקה Base, כלומר, baseMethod() מוחלף במחלקה נגזרת. במחלקה Test, משתנה ההתייחסות b (מהסוג Base class) מתייחס למופע של המחלקה Derivate. כאן מושגת פולימורפיזם בזמן ריצה בין Class Base ו-Derivate. בזמן ההידור, נוכחות השיטה baseMethod נבדקה במחלקה Base, אם היא נוכחת אז התוכנית הידור אחרת תוצג שגיאת המהדר. במקרה זה, baseMethod קיים במחלקה Base; לכן, הוא הידור בהצלחה. עם זאת, בזמן ריצה, זה בודק אם ה-baseMethod נדחק על ידי מחלקה נגזרת, אם כן, שיטת המחלקה הנגורה נקראת אחרת נקראת שיטת מחלקה Base. במקרה זה, המחלקה נגזרת עוקפת את baseMethod; לכן, שיטת המחלקה הנגזרת נקראת.


Core Java - OOPs Concepts: מילות מפתח אחרונות ראיון שאלות


90) מהו המשתנה הסופי?

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

מילת מפתח סופית ב-java
 class Bike9{ final int speedlimit=90;//final variable void run(){ speedlimit=400; } public static void main(String args[]){ Bike9 obj=new Bike9(); obj.run(); } }//end of class 
בדוק את זה עכשיו
 Output:Compile Time Error 
פרטים נוספים.

91) מהי השיטה הסופית?

אם נשנה שיטה כלשהי לשיטה סופית, לא נוכל לעקוף אותה. פרטים נוספים.

 class Bike{ final void run(){System.out.println('running');} } class Honda extends Bike{ void run(){System.out.println('running safely with 100kmph');} public static void main(String args[]){ Honda honda= new Honda(); honda.run(); } } 
בדוק את זה עכשיו
 Output:Compile Time Error 

92) מהו השיעור האחרון?

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

 final class Bike{} class Honda1 extends Bike{ void run(){System.out.println('running safely with 100kmph');} public static void main(String args[]){ Honda1 honda= new Honda1(); honda.run(); } } 
בדוק את זה עכשיו
 Output:Compile Time Error 
פרטים נוספים.

93) מהו המשתנה הריק הסופי?

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

 class Student{ int id; String name; final String PAN_CARD_NUMBER; ... } 
פרטים נוספים.

94) האם נוכל לאתחל את המשתנה הריק הסופי?

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


95) האם אתה יכול להכריז על השיטה העיקרית כסופית?

כן, אנו יכולים להכריז על השיטה הראשית כ-Public static final void main(String[] args){}.


96) מהו הפלט של תוכנית Java הבאה?

 class Main { public static void main(String args[]){ final int i; i = 20; System.out.println(i); } } 

תְפוּקָה

 20 

הֶסבֵּר

מכיוון ש-i הוא המשתנה הסופי הריק. ניתן לאתחל אותו פעם אחת בלבד. אתחלנו אותו ל-20. לכן, 20 יודפסו.


97) מהו הפלט של תוכנית Java הבאה?

 class Base { protected final void getInfo() { System.out.println('method of Base class'); } } public class Derived extends Base { protected final void getInfo() { System.out.println('method of Derived class'); } public static void main(String[] args) { Base obj = new Base(); obj.getInfo(); } } 

תְפוּקָה

 Derived.java:11: error: getInfo() in Derived cannot override getInfo() in Base protected final void getInfo() ^ overridden method is final 1 error 

הֶסבֵּר

השיטה getDetails() היא סופית; לכן לא ניתן לעקוף אותו בתת המחלקה.


98) האם נוכל להכריז על קונסטרוקטור כסופי?

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


99) האם אנו יכולים להכריז על ממשק כסופי?

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


100) מה ההבדל בין השיטה הסופית לשיטה המופשטת?

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