วิธีการครอบคลุมวิธีการ
ในคลาสการสืบทอดคลาสย่อยสามารถปรับเปลี่ยนวิธีการสืบทอดจากคลาสแม่นั่นคือคลาสย่อยสามารถสร้างวิธีการที่มีฟังก์ชั่นที่แตกต่างกันด้วยคลาสแม่ แต่มีชื่อเดียวกันประเภทค่าคืนและรายการพารามิเตอร์
หากมีการกำหนดวิธีการในคลาสใหม่ชื่อประเภทค่าส่งคืนและรายการพารามิเตอร์จะเหมือนกับคลาสแม่แล้ววิธีใหม่จะเรียกว่าวิธีเก่าที่ครอบคลุมวิธีเก่า
รายการพารามิเตอร์เรียกว่าลายเซ็นพารามิเตอร์รวมถึงประเภทของพารามิเตอร์จำนวนพารามิเตอร์และลำดับของพารามิเตอร์
วิธีการถูกปกคลุมสามารถเรียกผ่าน Super ในคลาสย่อยเท่านั้น
หมายเหตุ: ความครอบคลุมไม่ได้ลบวิธีการของคลาสแม่ แต่มันถูกซ่อนไว้สำหรับอินสแตนซ์ของคลาสย่อยและไม่ได้ใช้ในช่วงเวลา
โปรดดูตัวอย่างต่อไปนี้:
การสาธิตระดับสาธารณะ {โมฆะสาธารณะคงที่ (สตริง [] args) {dog mydog = สุนัขใหม่ ("วงกลมปีก"); = ใหม่ ชื่อ = ชื่อ;} โมฆะสาธารณะพูด () {system.out.println ("ฉันเป็นสัตว์ตัวเล็กชื่อของฉันคือ" + ชื่อ + "ฉันจะร้องไห้"); ) {super (ชื่อ);} // ครอบคลุมวิธีการพูด () โมฆะสาธารณะพูด () {system.println ("ฉันเป็นลูกสุนัขของฉันชื่อของฉันคือ" + ชื่อ + "ฉันจะทำเสียงเห่า "));}}
เรียกใช้ผลลัพธ์:
คัดลอกรหัสรหัสดังนี้:
ฉันเป็นลูกสุนัขชื่อของฉันคือวงการเดินฉันจะทำเสียงเห่า
วิธีการครอบคลุมหลักการ:
ประเภทการส่งคืนชื่อวิธีและรายการพารามิเตอร์ของวิธีการปกจะต้องเหมือนกับวิธีดั้งเดิม
วิธีการครอบคลุมไม่สามารถแย่ไปกว่าวิธีดั้งเดิม (นั่นคือการอนุญาตการเข้าถึงไม่ได้รับอนุญาตให้ลดลง)
วิธีการครอบคลุมไม่สามารถโยนผิดปกติได้มากกว่าวิธีดั้งเดิม
วิธีการถูกครอบคลุมไม่ใช่ประเภทสุดท้ายเนื่องจากวิธีการแก้ไขวิธีการไม่สามารถครอบคลุมได้
วิธีการที่ได้รับการคุ้มครองไม่สามารถเป็นส่วนตัวไม่เช่นนั้นจะกำหนดวิธีการในคลาสย่อยเท่านั้นและไม่ครอบคลุม
วิธีการครอบคลุมไม่สามารถคงที่ หากวิธีการในคลาสแม่เป็นแบบคงที่และวิธีการในคลาสย่อยไม่คงที่ แต่ทั้งสองวิธียกเว้นสิ่งนี้เพื่อให้ตรงกับเงื่อนไขการครอบคลุมแล้วการรวบรวมข้อผิดพลาดจะเกิดขึ้น; แม้ว่าวิธีการใน parent และ subclasses จะคงที่และเงื่อนไขการครอบคลุมนั้นจะยังคงไม่ครอบคลุมเนื่องจากวิธีการคงที่คือการจับคู่วิธีการคงที่และประเภทอ้างอิงคลาสเมื่อรวบรวม
วิธีการโหลดหนัก:
วิธีการ Java ได้รับการอธิบายก่อนหน้านี้ วิธีหนึ่งคือ func (int i) {... } ซึ่งถือว่าเป็นการโหลดของวิธีการอีกครั้ง
ความครอบคลุมที่แตกต่างและภาระหนัก:
รายการข้อกำหนดการครอบคลุมของวิธีการจะต้องสอดคล้องกันและวิธีการโหลดพารามิเตอร์ข้อกำหนดใหม่จะต้องไม่สอดคล้องกัน
ข้อกำหนดการครอบคลุมวิธีการประเภทการส่งคืนจะต้องสอดคล้องกันและวิธีการไม่มีข้อกำหนดสำหรับสิ่งนี้
วิธีการสามารถใช้เพื่อครอบคลุมคลาสพาเรนต์และวิธีการมากเกินไปกับวิธีการทั้งหมดในคลาสเดียวกัน (รวมถึงวิธีที่สืบทอดมาจากคลาสพาเรนต์)
วิธีการมีข้อกำหนดพิเศษสำหรับการอนุญาตการเข้าถึงและการโยนที่ผิดปกติและวิธีการไม่มีข้อ จำกัด ในพื้นที่นี้
วิธีหนึ่งของคลาสแม่สามารถครอบคลุมได้โดยคลาสย่อยหนึ่งครั้งและวิธีหนึ่งสามารถโหลดได้หลายครั้งในทุกคลาส