ביצוע casting ל-type של ערך מסויים בשפת התכנות Java

קורס ללימוד ג׳אווה
שפת התכנות Java מאפשרת לנו לכתוב קוד אשר יבצע casting ל-type של ערך מסויים או ל-type של reference לאובייקט שכבר קיים.

Share This Post

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

ביצוע casting לערך מטיפוס אשר נחשב ל-Primitive Type

כדי לבצע casting לערך מטיפוס אשר נחשב ל-Primitive Type (כגון int, float, double וכו׳) יש לציין את ה-type שאליו מבצעים את ה-casting בתוך סוגריים עגולות, ולמקם את מה שכתבנו משמאל לערך. 

				
					double d = 3;
int i = (int)d;
				
			

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

				
					int i = 5;
double d = i;
				
			
ביצוע casting ל-type של reference לאובייקט

לכל אובייקט יש type. זהו ה-class שממנו הוא נוצר. ל-reference של האובייקט גם יש type. כאשר יוצרים אובייקט חדש באמצעות new מקבלים reference לאובייקט החדש, וה-type של אותו reference זהה ל-type של האובייקט שיצרנו. את ה-type של האובייקט לא ניתן לשנות. אפשר לדמיין שה-type של האובייקט צרוב ב-DNA שלו, ושלא ניתן לשנותו. את ה-type של ה-reference ניתן לשנות (ניתן לעשות לו casting). ה-syntax לביצוע ה-casting זהה ל-syntax לביצוע casting לערך מטיפוס אשר נחשב ל-primitive type. 

				
					class A {}
class B extends A {}
class C extends B {}

C c = new C();
A a = c;
B b = (B)a;
				
			

ביצוע casting ל-type של reference לאובייקט יכול להתאפשר רק אם מדובר ב-casting ל-type שיורש (ישירות או בעקיפין) מה-type של ה-reference או ל-type שמוריש (ישירות או בעקיפין) ל-type של ה-reference. כאשר יש צורך ב-casting  ל-type שמוריש (ישירות או בעקיפין) ל-type של ה-reference אז ה-casting יתבצע באופן אוטומאטי. בדוגמת הקוד האחרונה, בשורה מספר 6 מתבצע casting באופן אוטומאטי ל-type של ה-reference אשר מוחזק במשתנה c מ-C ל-A (ה-type ששמו A מוריש בעקיפין ל-type ששמו C). בשורה מספר 7 יש צורך ב-casting וכיוון שלא מדובר ב-casting ל-type שמוריש ל-type ששמו A (ה-type ששמו B יורש מ-A) אז הוא לא מתבצע באופן אוטומאטי ועל כן עלינו לעשות אותו. 

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

התעדכנו בחידושים הטכנולוגים

פוסטים נוספים

karate software development
מאפייני ההדרכה

קווי הדימיון בין קראטה ופיתוח תוכנה

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

הזנק את העסק שלך!

נשמח להיפגש לקפה!

life michael academy asynchronous online courses

Java | Python | JavaScript | TypeScript

Update cookies preferences