אופס, חשבתי שאתה שואל מה..
ההבדל בין private ל public . לא משנה. הסבר קצר: encapsulation מדבר על הרעיון של הסתרת משתני private מה client שמשתמש במחלקה שלך. הבעיה היא שבהורשה , הבן לא יכול לגשת למשתנים שהוגדרו באב כ private. אם לעומת זאת אתה מגדיר את המשתנים באב כ protected, אז הבן כן יכול לגשת למשתני האב שמוגדרים ב section זה, אבל עדיין מי שנמצא מחוץ לשרשרת ההורשה הזו לא יכול לגשת אליהם. friend : הגדרת פונקציה בתוך מחלקה כ friend , קובעת שאותה פונקציה למעשה אינה שייכת למחלקה, הפונקציה מוצהרת ומוגדרת במקום אחר ועצם היותה "ידידותית" למחלקה מאפשרת לפונקציה זו לגשת גם למשתנים הפרטיים של המחלקה. כעיקרון שימוש ב friend מנוגד לרעיון של OO, משתמשים בזה בעיקר בחפיפת אופרטורים קומטטיביים או ב designs מיוחדים כגון bridge. כפי שאתה רואה קשה להבין יותר מידי מהסברים קצרים. עדיין אני ממליץ לך ללמוד את זה בצורה מסודרת.