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