เมื่อเขียนคลาสย่อย เรายังสามารถประกาศตัวแปรสมาชิกได้ กรณีพิเศษคือชื่อของตัวแปรสมาชิกที่ประกาศจะเหมือนกับชื่อของตัวแปรสมาชิกที่สืบทอดมาจากคลาสพาเรนต์ และประเภทที่ประกาศอาจแตกต่างกัน case คลาสย่อยจะซ่อนตัวแปรสมาชิกที่สืบทอดมา
ลักษณะของคลาสย่อยที่ซ่อนตัวแปรสมาชิกที่สืบทอดมามีดังนี้:
(1) อ็อบเจ็กต์คลาสย่อยและวิธีการที่กำหนดโดยคลาสย่อยนั้นดำเนินการตัวแปรสมาชิกด้วยชื่อเดียวกันกับคลาสพาเรนต์ ซึ่งอ้างถึงตัวแปรสมาชิกที่ประกาศอีกครั้งโดยคลาสย่อย
(2) อ็อบเจ็กต์คลาสย่อยยังคงสามารถเรียกเมธอดที่สืบทอดมาจากคลาสพาเรนต์เพื่อดำเนินการตัวแปรสมาชิกที่ถูกซ่อนโดยคลาสย่อย กล่าวคือ ตัวแปรสมาชิกที่ดำเนินการโดยเมธอดที่สืบทอดโดยคลาสย่อยจะต้องเป็นตัวแปรสมาชิกที่สืบทอดหรือซ่อนโดยคลาสย่อย
สังเกต:
วิธีการที่สืบทอดมาจากคลาสย่อยสามารถดำเนินการกับตัวแปรสมาชิกของคลาสย่อยที่สืบทอดและซ่อนไว้เท่านั้น วิธีการที่กำหนดใหม่โดยคลาสย่อยสามารถดำเนินการกับตัวแปรสมาชิกที่สืบทอดโดยคลาสย่อยและประกาศใหม่โดยคลาสย่อย แต่ไม่สามารถดำเนินการกับตัวแปรสมาชิกที่ซ่อนอยู่โดยคลาสย่อย
คลาสย่อยสามารถซ่อนวิธีการที่สืบทอดมาได้โดยการแทนที่วิธีการเหล่านั้น เรียกอีกอย่างว่าการแทนที่วิธีการ ถ้าคลาสย่อยสามารถสืบทอดเมธอดจากคลาสพาเรนต์ได้ คลาสย่อยก็มีสิทธิที่จะแทนที่เมธอดนี้ได้ การแทนที่เมธอดหมายถึงการกำหนดวิธีการในคลาสย่อย ประเภทของเมธอดนี้สอดคล้องกับประเภทของเมธอดของคลาสพาเรนต์หรือชนิดย่อยของประเภทของเมธอดในคลาสพาเรนต์ และชื่อของวิธีการ จำนวนพารามิเตอร์ ประเภทของพารามิเตอร์ และวิธีการของคลาสพาเรนต์จะเหมือนกันทุกประการ วิธีการที่กำหนดในลักษณะนี้โดยคลาสย่อยเรียกว่าวิธีการแทนที่โดยคลาสย่อยและไม่ใช่วิธีการใหม่
คลาสย่อยสามารถซ่อนวิธีการที่สืบทอดมาโดยการเขียนวิธีการใหม่ และเปลี่ยนสถานะและพฤติกรรมของคลาสพาเรนต์เป็นคลาสย่อยของตนเอง หากคลาสย่อยสามารถสืบทอดเมธอด f() ของคลาสลูกได้ คลาสลูกจะมีสิทธิ์แทนที่ f() เมื่อคลาสลูกแทนที่เมธอด f() ของคลาสผู้ปกครอง เมธอด f() ที่สืบทอดมาจะถูกซ่อนไว้ จากนั้นคลาสลูกมีสิทธิ์ที่จะแทนที่ f() เมื่อคลาสอ็อบเจ็กต์เรียกเมธอด f() จะต้องเรียกเมธอดที่ถูกแทนที่ f() หากคลาสย่อยไม่ได้แทนที่ แต่สืบทอดเมธอด f() ของคลาสพาเรนต์ แน่นอนว่าอ็อบเจ็กต์ที่สร้างโดยคลาสย่อยสามารถเรียกเมธอด f() ได้ แต่พฤติกรรมที่สร้างโดยเมธอด f() จะเหมือนกับ ของชั้นเรียนผู้ปกครอง
เมธอดที่ถูกแทนที่ไม่เพียงแต่สามารถดำเนินการกับตัวแปรสมาชิกที่สืบทอดมาและเรียกใช้เมธอดที่สืบทอดมาเท่านั้น แต่ยังสามารถดำเนินการตัวแปรสมาชิกที่ประกาศใหม่ของคลาสย่อยและเรียกใช้เมธอดอื่น ๆ ที่เพิ่งกำหนดใหม่ได้ แต่ไม่สามารถดำเนินการตัวแปรสมาชิกและวิธีการที่ซ่อนอยู่โดยคลาสย่อยได้ หากคลาสย่อยต้องการใช้เมธอดที่ซ่อนอยู่หรือตัวแปรสมาชิก คลาสย่อยนั้นจะต้องใช้คีย์เวิร์ด super
สังเกต:
เมื่อแทนที่เมธอดของคลาสพาเรนต์ คุณจะไม่ได้รับอนุญาตให้ลดสิทธิ์การเข้าถึงของเมธอด แต่คุณสามารถเพิ่มสิทธิ์การเข้าถึงได้ ลำดับของตัวแก้ไขการจำกัดการเข้าถึงจากสิทธิ์การเข้าถึงสูงไปต่ำคือ: สาธารณะ, ได้รับการป้องกัน, เป็นมิตร, ส่วนตัว. ตัวอย่างเช่น: คลาสย่อยแทนที่เมธอด f ของคลาสพาเรนต์ สิทธิ์การเข้าถึงของเมธอดนี้ในคลาสพาเรนต์คือระดับที่ได้รับการป้องกัน เมื่อคลาสย่อยแทนที่ ระดับจะไม่ได้รับอนุญาตให้ต่ำกว่าที่ได้รับการป้องกัน