JavaRush /จาวาบล็อก /Random-TH /การขยาย/การจำกัดประเภทการอ้างอิงให้แคบลง: แหล่งที่มาต่างก...
Core
ระดับ
Екатеринбург

การขยาย/การจำกัดประเภทการอ้างอิงให้แคบลง: แหล่งที่มาต่างกัน - การตีความต่างกัน

เผยแพร่ในกลุ่ม
สวัสดีตอนบ่าย. มีข้อสงสัยเกี่ยวกับข้อผิดพลาดในการบรรยาย JavaRush ให้มี คลาส Parent และคลาส Childสืบทอดมา ให้มีบรรทัดโค้ดต่อไปนี้: Parent parent = new Child; Child child = (Child) parent; ตามการบรรยายของหลักสูตรระดับ 12 บทที่ 1 (1. Polymorphism and overriding) ย่อหน้าที่ 5) (Type casting. )บรรทัดแรกเป็นการแคบ และบรรทัดที่สองคือการขยาย (ในการบรรยายวัวคือพ่อแม่วาฬคือทายาท) แต่นี่ไม่เป็นความจริง ทุกอย่างตรงกันข้ามเลย ความหมายของสิ่งที่อธิบายนั้นชัดเจน: ในบรรทัดแรกเราสร้างอ็อบเจ็กต์ประเภท Child และจำกัดการใช้งานเฉพาะวิธีการที่อธิบายไว้ในคลาส Parent เท่านั้น แต่นี่เป็นส่วนขยาย ดังนั้นการลดลงจึงเกิดขึ้นโดยปริยาย และในเอกสารเพิ่มเติมของระดับ 10 ก็มีข้อความว่า: ข้อความของคุณที่จะลิงก์...
Extension หมายถึง การย้ายจากประเภทที่เจาะจงมากขึ้นไปเป็นประเภทที่เจาะจงน้อยลง เช่น การเปลี่ยนผ่านจากเด็กสู่ผู้ปกครอง ในตัวอย่างของเรา การแปลงจากทายาท (Child, Child2) เป็นผู้ปกครอง (Parent) ถือเป็นส่วนขยาย ซึ่งเป็นการเปลี่ยนไปใช้ประเภททั่วไปมากขึ้น เช่นเดียวกับกรณีที่มีประเภทดั้งเดิม การเปลี่ยนแปลงนี้จะทำโดย JVM เองหากจำเป็นและนักพัฒนาจะมองไม่เห็น นั่นคือ มันไม่ต้องใช้ความพยายามเพิ่มเติมใด ๆ เนื่องจากจะสำเร็จเสมอ: คุณสามารถเข้าถึงอ็อบเจ็กต์ที่สร้างขึ้นจาก ผู้สืบทอดตามประเภทของผู้ปกครอง ผู้ปกครอง p1=ลูกใหม่ (); ผู้ปกครอง p2=ลูกใหม่2(); ในทั้งสองบรรทัด ตัวแปรประเภท Parent จะได้รับการกำหนดค่าประเภทอื่น ซึ่งหมายความว่าจะเกิด Conversion เนื่องจากนี่คือส่วนขยาย จึงดำเนินการโดยอัตโนมัติและประสบความสำเร็จเสมอ
บรรทัดที่สองของตัวอย่างของฉันตรงกันข้ามตามการเพิ่มเดียวกัน วัสดุคือการทำให้แคบลงซึ่งต้องมีการระบุประเภทอย่างชัดเจนในวงเล็บ และในการบรรยายก็ตีความว่าเป็นส่วนขยายซึ่งอาจผิดก็ได้ช่วยอธิบายด้วย ฉันไม่ต้องการมีมุมมองที่ขัดแย้งกันสองเท่าของการแคสต์ประเภท ข้างล่างนี้เป็นเพียงส่วนหนึ่งของการบรรยายครับ ส่วนการบรรยาย การบรรยาย (ครั้งก่อน) ยังมีข้อสงสัยอยู่ จะเขียนเรื่องนี้ได้ที่ไหน? ฉันไม่พบมันในคำถามที่พบบ่อย
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION