การโอเวอร์โหลด: หลายฟังก์ชันที่มีชื่อเดียวกันแต่ชื่อวิธีการเดียวกันแต่มีพารามิเตอร์ต่างกัน
หมายเหตุ: 1. พารามิเตอร์ที่แตกต่างกันหมายความว่าประเภทพารามิเตอร์ จำนวนพารามิเตอร์ และลำดับพารามิเตอร์อย่างน้อยหนึ่งรายการ
2. ค่าที่ส่งคืน ข้อยกเว้น และตัวแก้ไขการเข้าถึงไม่สามารถใช้เป็นเงื่อนไขสำหรับการโอเวอร์โหลดได้ (เนื่องจากการเรียกที่ไม่ระบุชื่อ ความคลุมเครือจะเกิดขึ้น เช่น: ถือเป็นโมฆะ () และ int a() หากเรียก a() ความกำกวมจะเกิดขึ้น)
3.วิธีการหลักสามารถโอเวอร์โหลดได้
แทนที่: คลาสย่อยเขียนเมธอดของคลาสพาเรนต์ใหม่ โดยกำหนดให้ชื่อเมธอดและประเภทพารามิเตอร์เหมือนกันทุกประการ (พารามิเตอร์ไม่สามารถเป็นคลาสย่อยได้) ค่าที่ส่งคืนและข้อยกเว้นน้อยกว่าหรือเหมือนกับคลาสพาเรนต์ (ที่ คือคลาสย่อยของคลาสพาเรนต์) และตัวดัดแปลงการเข้าถึงมีขนาดเล็กกว่าคลาสพาเรนต์มีขนาดใหญ่กว่าหรือเท่ากัน
สองอันเดียวกัน สองเล็ก และหนึ่งใหญ่
หมายเหตุ: วิธีการอินสแตนซ์ของคลาสย่อยไม่สามารถแทนที่วิธีการคงที่ของคลาสย่อยได้ วิธีการแบบคงที่ของคลาสย่อยไม่สามารถแทนที่วิธีการของอินสแตนซ์ของคลาสหลักได้ (เกิดข้อผิดพลาดระหว่างการคอมไพล์)
ซ่อนเร้น: เมื่อคลาสพาเรนต์และคลาสย่อยมีแอตทริบิวต์หรือเมธอดที่มีชื่อเดียวกัน คุณลักษณะหรือเมธอดของคลาสพาเรนต์ที่มีชื่อเดียวกันจะหายไปในรูปแบบ แต่ยังคงมีอยู่จริง
หมายเหตุ: เมื่อซ่อนเกิดขึ้น ไม่ว่าจะเป็นคลาสใดก็ตามที่เป็นประเภทการประกาศ คุณสมบัติหรือเมธอดของคลาสที่เกี่ยวข้องจะถูกเรียก และการเชื่อมโยงแบบไดนามิกจะไม่เกิดขึ้น
การซ่อนเมธอดมีรูปแบบเดียวเท่านั้น นั่นคือ มีเมธอดแบบคงที่เดียวกันอยู่ในคลาสพาเรนต์และคลาสย่อย
คุณสมบัติสามารถซ่อนได้เท่านั้น ไม่สามารถเขียนทับได้
ตัวแปรอินสแตนซ์ของคลาสย่อย/ตัวแปรแบบคงที่สามารถซ่อนตัวแปรอินสแตนซ์/แบบคงที่ของคลาสพาเรนต์ได้ โดยสรุป ตัวแปรสามารถถูกซ่อนแบบข้ามได้
ความแตกต่างระหว่างการซ่อนและการปกปิด:
คุณลักษณะที่ซ่อนอยู่ หลังจากที่คลาสย่อยถูกบังคับเข้าสู่คลาสพาเรนต์ คุณลักษณะในคลาสพาเรนต์จะถูกเข้าถึง
เมธอดที่ถูกแทนที่ หลังจากที่คลาสย่อยถูกบังคับให้แปลงเป็นคลาสพาเรนต์แล้ว ยังคงเรียกเมธอดของคลาสย่อยนั้นเอง
เนื่องจากการครอบคลุมถูกผูกไว้แบบไดนามิกและขึ้นอยู่กับ RTTI (การระบุประเภทรันไทม์ การตรวจสอบประเภทรันไทม์) การซ่อนจึงไม่ขึ้นอยู่กับ RTTI โดยสรุป RTTI มีไว้สำหรับการครอบคลุมเท่านั้น ไม่ใช่สำหรับการซ่อน
สถานการณ์พิเศษ:
1. คุณสมบัติที่แก้ไขโดย Final สามารถซ่อนได้ แต่ไม่สามารถกำหนดได้ กล่าวคือ ไม่สามารถกำหนดคุณสมบัติสุดท้ายด้วย = ได้ กล่าวกันว่าคุณสมบัติสุดท้ายไม่สามารถแก้ไขได้ เนื่องจากหลังจากตัวแปรประเภทการอ้างอิงแล้ว ถูกแก้ไขด้วยค่าสุดท้าย แต่ไม่สามารถแก้ไขได้ ชี้ไปที่วัตถุอื่น ๆ แต่สามารถเปลี่ยนค่าของตัวเองได้ สามารถทดสอบแอตทริบิวต์สุดท้ายได้เมื่อรันไทม์ แต่คำสั่งการเริ่มต้นจะต้องปรากฏขึ้น
2. วิธีการแก้ไขขั้นสุดท้ายไม่สามารถเขียนทับได้และสามารถโอเวอร์โหลดได้
3. คลาสที่แก้ไขขั้นสุดท้ายไม่สามารถสืบทอดได้
4. วิธีการส่วนตัวจะเพิ่มขั้นสุดท้ายโดยปริยาย