Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

กฎสำหรับการโอเวอร์ไรด์เมธอดใน Java

ต่อไปนี้คือกฎที่เราควรพิจารณาขณะ override เมธอดอย่างถูกต้อง:

  • รายการอาร์กิวเมนต์ (argument list) ควรจะเหมือนกับของเมธอดที่ถูก override ทุกประการ
  • ชนิดการคืนค่า (return type) ควรจะเหมือนกันหรือเป็น subtype ของชนิดการคืนค่าที่ประกาศในเมธอดที่ถูก override ต้นฉบับในซุปเปอร์คลาส
  • ระดับการเข้าถึง (access level) ไม่สามารถจำกัดมากกว่าระดับการเข้าถึงของเมธอดที่ถูก override ได้ ตัวอย่าง: หากเมธอดของซุปเปอร์คลาสประกาศเป็น public เมธอดที่ override ในซับคลาสไม่สามารถเป็น private หรือ protected ได้
  • เมธอดอินสแตนซ์สามารถ override ได้ก็ต่อเมื่อพวกมันถูกสืบทอดโดยซับคลาส
  • เมธอดที่ประกาศเป็น final ไม่สามารถ override ได้
  • เมธอดที่ประกาศเป็น static ไม่สามารถ override ได้ แต่สามารถประกาศใหม่ (re-declared) ได้
  • หากไม่สามารถสืบทอดเมธอดได้ แล้วมันก็ไม่สามารถ override ได้
  • ซับคลาสภายในแพ็กเกจเดียวกับซุปเปอร์คลาสของอินสแตนซ์ สามารถ override เมธอดของซุปเปอร์คลาสใดๆ ที่ไม่ได้ประกาศเป็น private หรือ final
  • ซับคลาสในแพ็กเกจที่ต่างกัน สามารถ override ได้เฉพาะเมธอด non-final ที่ประกาศเป็น public หรือ protected
  • เมธอดที่ override สามารถโยน unchecked exceptions ใดๆ ได้ ไม่ว่าจะว่าเมธอดที่ถูก override จะโยนข้อยกเว้นหรือไม่ อย่างไรก็ตาม เมธอดที่ override ไม่ควรโยน checked exceptions ใหม่หรือกว้างกว่าที่ประกาศโดยเมธอดที่ถูก override เมธอดที่ override สามารถโยน checked exceptions ที่แคบกว่าหรือน้อยกว่าของเมธอดที่ถูก override ได้
  • คอนสตรัคเตอร์ไม่สามารถ override ได้