את כל התשובות לשאלות שלך אפשר למצוא...
א. בספר טוב
ב. באתר של אורקל, או בחיפוש מהיר בגוגל
לגבי הורשה ממחלקה (שים לב לא מאובייקט יורשים אלא ממחלקה): אם מחלקת הבן יורשת ממחלקת האב ומכסה(מחביאה - hiding) אותה, בmain עד כמה שאני יודע לא תוכל לגשת למתודה באב.
הדרך שאני יכול לחשוב עליה היא לעשות דלגציה... תעשה מתודה בבן שקוראת למתודה באב באמצעות המילה השמורה super
http://docs.oracle.com/javase/tutorial/java/IandI/override.html
אם אני לא טועה הסיפור קצת שונה ב++C עם המצביעים... אם אתה מחליף מצביע למחלקת האב והמתודות אינן virtual אז תוכל לגשת למתודה באב... או אם אתה עושה superclass::foo()...אבל זה סתם בירבורים לא קשורים
אי אפשר לדרוס מתודות שהן private מהסיבה הפשוטה שבמחלקת הבן לא רואים את המתודה אצל האב, אתה יכול לכתוב מתודה חדשה עם אותה החתימה וזה לא יקרא דריסה/החבאה (override/hide) כי הבן מלכתחילה אינו רואה את המתודה אצל האב מאחר והיא private.
לשאלה עם דריסת שדות אני חושב שתמצא את התשובה
http://geekexplains.blogspot.co.il/2008/06/field-hiding-in-java-fields-are-only.html
באמת, אני לא שוס בג'אווה אל תתפוס אותי במילה...אבל התשובות נמצאות באינטרנט (גוגל באמת יודע הכל...) רק צריך להפסיק להתעצל לחפש