ทุกคนรู้ว่าการสืบทอดคลาสย่อยของคลาสแม่เป็นมรดกประเภทรวมถึงคุณลักษณะและวิธีการ! หากคลาสย่อยและคลาสแม่มีลายเซ็นเดียวกันมันจะเรียกว่าการเขียนทับ! หากแอตทริบิวต์ของคลาสย่อยและคลาสแม่เหมือนกันคลาสแม่จะซ่อนคุณลักษณะของตัวเอง!
แต่ถ้าฉันใช้การอ้างอิงที่สร้างขึ้นโดยคลาสหลักและคลาสเด็กเพื่อชี้ไปที่วัตถุที่สร้างโดยคลาสเด็กผลลัพธ์ของค่าหรือวิธีการในวัตถุในคลาสเด็กที่เรียกว่าอะไรคืออะไร?
ดูรหัส:
ชั้นเรียนสาธารณะ FieldDemo {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {นักเรียน t = นักเรียนใหม่ ("แจ็ค"); บุคคล p = t; // การอ้างอิงที่สร้างโดยคลาสพาเรนต์ชี้ไปที่วัตถุที่สร้างโดย subclass system.out.println (t.name+","+p.name); System.out.println (t.getName ()+","+p.getName ()); }} คลาสบุคคล {ชื่อสตริง; อายุ int; สตริงสาธารณะ getName () {return this.name; }} นักเรียนชั้นเรียนขยายบุคคล {ชื่อสตริง; // แอตทริบิวต์และชื่อแอตทริบิวต์คลาสแม่เหมือนกัน แต่มันจะไม่เหมือนกับชื่อแอตทริบิวต์คลาสแม่ในระหว่างการพัฒนา! - นักเรียนสาธารณะ (ชื่อสตริง) {this.name = name; super.name = "Rose"; // กำหนดค่าให้กับแอตทริบิวต์ในคลาสแม่} สตริงสาธารณะ getName () {return this.name; - ผลการส่งคืนคือ:
แจ็คโรส
แจ็คแจ็ค
เหตุผลคือ: ใน Java คุณลักษณะจะถูกผูกไว้กับประเภทและวิธีการถูกผูกไว้กับวัตถุ!
บทความนั้นง่ายมาก แต่ก็มีคุณค่าในทางปฏิบัติบางอย่าง ฉันหวังว่ามันจะเป็นประโยชน์กับการเรียนรู้ของทุกคน