- - מדריך: מילת המפתח "Final" ב- Java

הדרכה: מילת המפתח "Final" ב- Java

בשלב זה אני מקווה שהפכת לשיחהעם מילות המפתח כמו סטטי וזה ב- Java. בשפת תכנות Java 'final' היא מילת מפתח המשמשת למטרות שונות והנה רשימה של כל ההקשרים שבהם אנו משתמשים בסופי:

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

כעת נבין את כל אלה, תוך שימוש בדוגמאות הבאות עבור כל אחד מההקשרים:

תוכניות

1. תוכנית למשנה סופי

public class Circle{
public static void main(String args[]){
final double PI = 3.14;
final double radius = 3.50;
System.out.println("Area of Circle is: "+(PI*Math.pow(radius,2)));
radius = 3.75;
System.out.println("Area of Circle is: "+(PI*Math.pow(radius,2)));
}
}

תוכנית למשנה סופי

2. תוכנית לשיטה סופית

public class Figure {
final public double calculateArea(double radius){
return Math.pow(radius,2);
}
}
class Circle extends Figure{
public double  calculateArea(double radius){
System.out.println("Overriding Not Allowed");    /*  calculateArea() can not be overridden */
}
}
class Main{
public static void main(String args[]){
Circle circle = new Circle();
circle.calculateArea(1.23);
}
}

תוכנית לשיטה סופית

3. תוכנית לשיעור גמר

final class Circle{
final double PI = 3.14;
double calculateArea(double radius){
return (PI*Math.pow(radius,2));
}
}
class Cylinder extends Circle{
double height = 10.0;
double calculateArea(double radius){
return 2*((PI*Math.pow(radius,2))+(PI*radius*height));
}
}
class Main{
public static void main(String args[]){
Cylinder cylinder = new Cylinder();
cylinder.calculateArea(3.11);
}
}

תוכנית לשיעור גמר

הסבר

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

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

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

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

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

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

הערות