อะไรคือแรงจูงใจที่ทำให้จาวาใช้@Overrideคำอธิบายประกอบแทนที่จะสร้างoverrideตัวดัดแปลงใหม่?
@Override
public String toString() {
return "";
}
เมื่อเทียบกับ
public override String toString() {
return "";
}
อะไรคือแรงจูงใจที่ทำให้จาวาใช้@Overrideคำอธิบายประกอบแทนที่จะสร้างoverrideตัวดัดแปลงใหม่?
@Override
public String toString() {
return "";
}
เมื่อเทียบกับ
public override String toString() {
return "";
}
คำตอบ:
@Override เดิมไม่ได้อยู่ในภาษา เมื่อรู้สึกว่าต้องการเพิ่มมันง่ายกว่าที่จะใช้กลไกทั่วไป (คำอธิบายประกอบ) มากกว่าการเพิ่มคำหลักใหม่ให้กับภาษา การเพิ่มคำหลักใหม่เป็นการเปลี่ยนแปลงที่เข้ากันไม่ได้เสมอเพราะมันสามารถทำลายโปรแกรมที่ใช้คำนั้นเป็นตัวระบุ
ในภาษาที่เพิ่มเครื่องหมายแทนที่จากวันแรกมันมักจะเป็นคำหลัก (ตัวอย่างคือ Kotlin และ Scala) ใน Java มันเป็นเรื่องของการอยู่ข้างหลังเข้ากันได้กับรุ่น Java ที่เก่ากว่าซึ่งไม่มีเครื่องหมายแทนที่ใด ๆ
defaultเป็นคำหลักที่สงวนไว้แล้ว (ใช้ในคำสั่งสวิตช์) - พวกเขาเพิ่งเพิ่มการใช้ใหม่สำหรับมัน นอกจากนี้ยังมีคำหลักบางคำที่ไม่ได้ทำอะไรเลยในตอนนี้ แต่สงวนไว้สำหรับการใช้งานในอนาคต (const, goto) - ดูJLS .93.9
enumคำหลักที่ถูกเพิ่มเข้ามาจะทำลายรหัสที่เก่ากว่า คำค้นหาเพิ่มเติมแบ่งได้ที่นี่: stackoverflow.com/questions/16506411
คุณไม่จำเป็นต้องใช้คำอธิบายประกอบ @Overrideเพื่อแทนที่พฤติกรรมจริง ๆ มันเป็นคำอธิบายประกอบเพราะเป็นการเพิ่มบริบทของเจตนาของเมธอดสำหรับคอมไพเลอร์โดยไม่เปลี่ยนวิธีของตัวเอง
หากไม่มีคำอธิบายประกอบคุณอาจตั้งใจจะยกเลิกการทำงาน แต่ไม่ได้ตั้งใจทำ (โดยใช้ลายเซ็นที่แตกต่างกันเล็กน้อย) การเพิ่มคำอธิบายประกอบจะบอกคอมไพเลอร์เพื่อสร้างข้อผิดพลาดหากวิธีนี้ไม่ได้มีผลเหนือพฤติกรรม
เช่นนี้ทำให้รู้สึกว่าเป็นคำอธิบายประกอบที่สมบูรณ์แบบ