הניסוח שלך לא ממש מדויק.
אחד השימושים היעילים ל-inner classes הוא למימוש callback. לא חייבים לעשות את זה בעזרת מחלקה פנימית. אם תסתכל על הדוגמה שהוא נותן עם caller ו-callee1 ו-callee2, תראה ש-callee1 פשוט מממש את ה-interface, ואילו callee2 משתמש במחלקה פנימית כדי לעשות את אותו הדבר. למה לעשות את זה? ראשית, זה נוח. זה מאפשר לך ליצור הפרדה פנימית בתוך המחלקה בין הפונקציות ה"נורמליות" שלה לבין הפונקציות האלו, הספציפיות. שנית, לפעמים אתה חייב את זה. למשל, דמיין לך שיש שני interface-ים שונים שאתה רוצה לממש כ-callback-ים, אבל שניהם דורשים את אותה פונקציה, נגיד ()Run - והפעילות של כל אחד מהם היא שונה; במקרה כזה אתה לא יכול לרשת מה-Interface-ים הללו, כי תהיה לך התנגשות. אתה חייב להשתמש ב-Inner class לצורך כך. אקל מתייחס לזה בתוך הקוד בדוגמה - Callee2 יורש מ-MyIncrement ולכן כבר יש לו פונקציית increment אחת. הוא רוצה לממש increment עבור ה-callback בצורה שונה, ולכן חייב להשתמש ב-closure, כלומר ב-inner class.