บทความนี้กล่าวถึงแนวคิดพื้นฐานในการซ่อนความคิดเชิงวัตถุ Java (ตัวแปรสมาชิกที่ซ่อนอยู่)
ก่อนที่จะพูดถึงปัญหานี้ลองดูที่รหัสที่ง่ายมาก ข้อมูลของวิธีการคืออะไร?
/*** @author Hollis 17/9/27 */ คลาสสาธารณะ FieldOverRiding {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {sub c1 = ใหม่ย่อย (); System.out.println ("C1.S:" + C1.S); System.out.println ("C1.S:" + C1.S); System.out.println ("c1.say:" + c1.say ()); Super C2 = ใหม่ย่อย (); System.out.println ("C2.S:" + C2.S); System.out.println ("C2.S:" + C2.S); }} คลาส super {string s = "super"; สตริงบอกว่า () {return "hello super"; }} คลาสย่อยขยาย super {string s = "sub"; สตริงบอกว่า () {return "Hello Sub"; -ผลลัพธ์ผลลัพธ์:
C1.S: Sub C1.Say: Hello Sub C2.s: Super C2.say: Hello Sub
มันเหมือนกับที่คุณคิด? หากเหมือนกันคุณไม่ต้องอ่านต่อ เพราะนี่ไม่ใช่เรื่องยากเพียงแค่รู้
เขียนใหม่ใน Java
ในความเข้าใจอย่างลึกซึ้งเกี่ยวกับการเขียนใหม่และการโอเวอร์โหลดใน Java เราได้แนะนำ:
ในกรณีที่มีสองวิธีที่มีชื่อและรายการพารามิเตอร์เดียวกันในคลาสย่อยของ Java และคลาสหลัก เนื่องจากพวกเขามีลายเซ็นวิธีการเดียวกันวิธีการใหม่ในคลาสย่อยจะแทนที่วิธีดั้งเดิมในคลาสหลัก
ก่อนหน้านี้เนื่องจาก Java มีวิธีการเขียนใหม่ในการสืบทอดสิ่งนี้ยังสะท้อนให้เห็นถึงความหลากหลายแบบไดนามิกของ Java
ตัวแปรสมาชิกสามารถเขียนใหม่ใน Java ได้หรือไม่?
การแนะนำการเขียน Java ข้างต้นข้างต้นระบุอย่างชัดเจนว่าการเขียนใหม่หมายถึงวิธีการ ไม่ได้กล่าวถึงตัวแปรสมาชิก ผ่านตัวอย่างข้างต้นเราสามารถพบว่าตัวแปรสมาชิกยังไม่ได้เขียนใหม่
ดังนั้นใน Java ตัวแปรสมาชิกจะไม่ถูกเขียนใหม่ นี่คือคำอื่น: ซ่อน
การซ่อนตัวแปรสมาชิกใน Java
คำจำกัดความของโดเมนที่ซ่อนอยู่ในเอกสาร Java:
ภายในชั้นเรียนฟิลด์ที่มีชื่อเดียวกันกับฟิลด์ใน SuperClass ซ่อนฟิลด์ของ SuperClass แม้ว่าประเภทของพวกเขาจะแตกต่างกัน ภายในคลาสย่อยฟิลด์ใน superclass ไม่สามารถอ้างอิงได้ด้วยชื่อง่าย ๆ แต่จะต้องเข้าถึงฟิลด์ผ่าน Super โดยทั่วไปแล้วเราไม่แนะนำให้ซ่อนฟิลด์เพราะมันทำให้รหัสอ่านยาก
แปลเป็นภาษาจีน:
ในชั้นเรียนหากตัวแปรสมาชิกในคลาสย่อยมีชื่อเดียวกันกับตัวแปรสมาชิกในคลาสหลักแล้วแม้ว่าพวกเขาจะมีประเภทที่แตกต่างกันพวกเขามีชื่อเดียวกันเท่านั้น ตัวแปรสมาชิกในคลาสหลักจะถูกซ่อนไว้ ในคลาสย่อยตัวแปรสมาชิกของคลาสแม่ไม่สามารถเข้าถึงได้ง่ายๆโดยอ้างอิง ตัวแปรสมาชิกที่ซ่อนอยู่โดยคลาสหลักจะต้องได้รับจากการอ้างอิงถึงคลาสหลัก โดยทั่วไปแล้วเราไม่แนะนำให้ซ่อนตัวแปรสมาชิกเพราะสิ่งนี้จะทำให้รหัสอ่านยาก
ในความเป็นจริงเพียงแค่ใส่คลาสย่อยจะไม่เขียนทับตัวแปรสมาชิกที่เขียนทับคลาสแม่ดังนั้นการเข้าถึงตัวแปรสมาชิกไม่สามารถเข้าถึงได้โดยใช้ polymorphism เช่นวิธีการ
วิธีเข้าถึงตัวแปรสมาชิกที่ซ่อนอยู่
ในความเป็นจริงผ่านตัวอย่างก่อนหน้านี้และการแนะนำตัวแปรสมาชิกในตอนนี้คุณได้รู้จักวิธีการเข้าถึงตัวแปรสมาชิกที่ซ่อนอยู่แล้ว มันคือการใช้การอ้างอิงของคลาสแม่เพื่อเข้าถึงตัวแปรสมาชิกเช่น Super c2 = new Sub(); System.out.println(" c2.s : " + c2.s);。 หรือใช้ System.out.println(((Super)c1).s); -
สรุป
ข้างต้นคือการเขียนวิธีการใหม่ใน Java และการซ่อนตัวแปรสมาชิกที่แนะนำโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!