Thilo เพิ่มคำตอบที่ดีสำหรับคำถามแรกของคุณ "เป็นไปได้อย่างไร" ฉันต้องการที่จะอธิบายรายละเอียดเล็กน้อยในคำถามที่ถามที่สอง: เหตุใดจึงมีพฤติกรรมนี้อนุญาต
สำหรับผู้เริ่มต้นเราจะต้องชัดเจนอย่างสมบูรณ์ว่าพฤติกรรมนี้ไม่ จำกัด เฉพาะคลาสภายในซึ่งโดยนิยามเป็นประเภทซ้อนกันไม่คงที่ ลักษณะการทำงานนี้ได้รับอนุญาตสำหรับประเภทที่ซ้อนกันทั้งหมดรวมถึง enums ซ้อนกันและอินเทอร์เฟซที่ต้องเป็นแบบคงที่และไม่สามารถมีอินสแตนซ์ที่ล้อมรอบ โดยพื้นฐานแล้วตัวแบบคือการทำให้เข้าใจง่ายลงไปยังข้อความสั่งต่อไปนี้: รหัสที่ซ้อนกันมีการเข้าถึงแบบเต็มรูปแบบในการใส่รหัส - และในทางกลับกัน
ถ้าอย่างนั้นทำไม ฉันคิดว่าตัวอย่างแสดงให้เห็นถึงจุดที่ดีขึ้น
นึกถึงร่างกายและสมองของคุณ หากคุณฉีดเฮโรอีนลงในแขนสมองของคุณก็จะสูงขึ้น หากสมองของคุณมองเห็นสิ่งที่เขาเชื่อว่าเป็นภัยคุกคามต่อความปลอดภัยส่วนบุคคลของคุณพูดตัวต่อเช่นนี้เขาจะทำให้ร่างกายของคุณหันไปทางอื่นและวิ่งไปที่เนินเขาโดยที่คุณไม่ได้ "คิด" เกี่ยวกับเรื่องนี้
ดังนั้นสมองก็เป็นส่วนที่อยู่ภายในของร่างกาย - และก็แปลกไปพอ ๆ การใช้การควบคุมการเข้าถึงระหว่างองค์กรที่เกี่ยวข้องอย่างใกล้ชิดนั้นจะสูญเสียสิทธิ์ในการเรียกร้องความสัมพันธ์ หากคุณต้องการควบคุมการเข้าถึงคุณต้องแยกชั้นเรียนออกเป็นหน่วยต่าง ๆ อย่างแท้จริง พวกเขาเป็นหน่วยเดียวกัน ตัวอย่างการขับขี่เพื่อการศึกษาต่อไปคือดูว่ามีการนำ Java Iterator
มาใช้อย่างไร
การเข้าถึงได้ไม่ จำกัด จากการใส่รหัสไปยังโค้ดที่ซ้อนกันทำให้ส่วนใหญ่ค่อนข้างไร้ประโยชน์ในการเพิ่มตัวดัดแปลงการเข้าถึงไปยังเขตข้อมูลและวิธีการของประเภทที่ซ้อนกัน การทำเช่นนั้นเป็นการเพิ่มความยุ่งเหยิงและอาจให้ความรู้สึกผิด ๆ ต่อความปลอดภัยสำหรับผู้มาใหม่ของภาษาโปรแกรม Java