java -מחלקת-בת יכולה לגשת לprivate?

java -מחלקת-בת יכולה לגשת לprivate?

מתבייש לשאול את זה, אבל בכל זאת...
אם יש לי מחלקה שנגזרת ממחלקה אחרת, אני יכול מתוך המחלקה-בת לגשת למשתנים שהוגדרו כprivate במחלקה-אם? אם כן - אני פונה אליהם ישירות בשמם, או דרך super? תודה! :)
 
תשובה לשאלתך

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

נגיד שיש לי משהו כזה:
public class MyClass { private int x; } public class MyBetterClass extends MyClass { public int GetX () {return x;} }​
זה לא עובד לי - הוא אומר לי שהוא לא יכול לגשת למשתנה private שנמצא ב MyClass מתוך MyBetterClass, שהיא מחלקה-בת. גם שימוש ב super לא עזר. מדוע? האם זו תכונה של OO?
 
בוודאי

זה מה שהסברתי לך!!! שים לב מה אתה עושה בתכנית: אתה יוצר מחלקה כללית במכילה משתנה int בשם ס המוגדר כפרטי קרי Private מבחינת הקומפיילר נתון זה יכול לגשת אליו רק האבא שלו ולא המחלקות המורשות. שים לב שאופי העבודה בבקרת הגישה ב Java שונה מזה של C++. אז נכון שביצעת הורשה במחלקה הבאה אבל שים לב שזו הורשה לתכונות בלבד!!! משתנה המוגדר כפרטי טינו בעל תכונות אלו של הורשה. ישנה כמובן אפשרות ל"עבוד" על הקומפיילר...אבל זה טיפה יותר ארוך..
 
אה... הבנתי אותך הפוך :)

הבנתי מהתשובה הראשונה שזה יעבוד. באמת היה נראה לי מוזר, אבל אני לא ממש מכיר JAVA אז הנחתי שאולי.
מזה אומר "לעבוד על הקומפיילר"?
 

voguemaster

New member
הלו!!!! JAVA!!! מאיפה הבאת את זה ?

PRIVATE בג´אווה: אין גישה לאף מחלקה אחרת, לא באותה חבילה, לא מחוץ לחביחה ולא לפונקציה שנגזרת מהמחלקה המדוברת. נא לדייק, זה לא CPP... אלי
 

J2EE

New member
אם נדייק

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

voguemaster

New member
אתה צוחק ?

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

kleini

New member
פשוט

הנושא מאוד פשוט private - רק למחלקה בה השיטות\משתנים כתובים protected - יש גישה גם למחלקות יורשות public - יש גישה לכולם
 
באופן כללי

תמיד צריך לפנות למשתנים כאלה דרך PROPERTIES. אפילו אם זה ע"י תת-מחלקה. לכן, בשביל להיות BY THE BOOK, עליך להגדיר GET (וגם SET), עבור אותו MEMBER (למרות שזה בא כבר "בחינם"), וכאשר אתה רוצה לפנות אליו, פשוט לפנות דרך הגדרת ה-PROPERTY.
 
למעלה