ABA


"ג'אווה: מישהו יכול להסביר את ההבדל בין פונקציה סטטית לל"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15744 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15744
the crusher
חבר מתאריך 1.8.02
18936 הודעות, דרג אמינות חבר זה
   23:34   27.02.10   
אל הפורום  
  ג'אווה: מישהו יכול להסביר את ההבדל בין פונקציה סטטית לל  
 
   ללא סטטית?
תודה רבה!


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  פונ' סטטית אומרת שאתה לא חייב ליצור מופע של האובייקט Nesher  27.02.10 23:54 1
     אני חושב שכן. the crusher 28.02.10 02:18 2
         משהו כזה... Nesher  28.02.10 07:51 3
         מכתב ronen333  28.02.10 09:00 4
             אינו יכול לקרוא? אז איך בג'אווה בדיוק תקרא שלא מה-main ldan192  28.02.10 18:20 5
                 עידן צודק. Deuce  28.02.10 18:50 6
                 התכוונתי הפוך. סלח לי יצאתי דיסלקט XD ronen333  28.02.10 19:06 7

       
Nesher  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.7.02
2 הודעות, 24 פידבק, 43 נקודות
   23:54   27.02.10   
אל הפורום  
  1. פונ' סטטית אומרת שאתה לא חייב ליצור מופע של האובייקט  
בתגובה להודעה מספר 0
 
כלומר לגשת ישר לפונ'
אתה תשתמש בפונ' סטטית למשל לכתוב ללוג
Log.Write

לא סטטית מחייב ליצור מופע של האובייקט
MyObject obj = new myObject();
obj.Write

מבין?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
the crusher
חבר מתאריך 1.8.02
18936 הודעות, דרג אמינות חבר זה
   02:18   28.02.10   
אל הפורום  
  2. אני חושב שכן.  
בתגובה להודעה מספר 1
 
   בעצם פונקציה סטטית נועדה לעבודה "כללית" בזמן שפונקציה לא סטטית נועדה לעבודה עם אובייקט?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nesher  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.7.02
2 הודעות, 24 פידבק, 43 נקודות
   07:51   28.02.10   
אל הפורום  
  3. משהו כזה...  
בתגובה להודעה מספר 2
 
פונ' סטטית מאפשרת לך גישה ישירה כאשר יש צורך בפונקציונאליות חד פעמית
מאשר שימוש באובייקט מלא
אני בטוח שתוכל למצוא גם הגדרה יותר טובה בגוגל לנושא


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות, דרג אמינות חבר זה
   09:00   28.02.10   
אל הפורום  
  4. מכתב  
בתגובה להודעה מספר 2
 
   על רגל אחת כן אפשר בערך להגיד את זה, הרעיון של פונקציות סטטיות הן שהן שייכות לרמת המחלקה בעוד ש"רגילות" שייכות לרמת האובייקט.
תזכור גם שאינך יכול לקרוא לפונקציה סטטית מפונקציה לא סטטית (אם תחשוב על זה תראה שזה גם מאוד הגיוני).
יש גם מחלקה סטטית,ושדות סטטים מלבד מטודות סטטיות.
כמו שנשר אמר אתה יכול למצוא הרבה מידע והסברים כאשר תריץ חיפוש באינטרנט.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   18:20   28.02.10   
אל הפורום  
  5. אינו יכול לקרוא? אז איך בג'אווה בדיוק תקרא שלא מה-main  
בתגובה להודעה מספר 4
 
בלבד? P:

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


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות, דרג אמינות חבר זה
   18:50   28.02.10   
אל הפורום  
  6. עידן צודק.  
בתגובה להודעה מספר 5
 
אין שום בעייה לקרוא לפונקציה סטטית מפונקצייה לא סטטית; יתרה מכך, רמת הנראות בין מתודה סטטית למתודה שאינה סטטית דיי שקולה, לפחות בפונקציות מהבחינה הזאת שאם יש לך 2 פונקציות, שתיהן מדרגות נראות X (באשר X יכול להיות private, public, protected או package friendly) אזי הגישה לשתיהן תהא אפשרית באותה מידה מכל class שהוא.

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

A.foo();

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

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






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות, דרג אמינות חבר זה
   19:06   28.02.10   
אל הפורום  
  7. התכוונתי הפוך. סלח לי יצאתי דיסלקט XD  
בתגובה להודעה מספר 5
 
   ערכתי לאחרונה בתאריך 28.02.10 בשעה 19:13 בברכה, ronen333
 
התכוונתי לומר שאתה לא יכול לקרוא לפונקציה לא סטטית מפונקציה סטטית.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net