เรารู้ว่าเสือเป็นสัตว์ ถ้าสัตว์เป็นสัตว์ชั้นแม่ ควรสังเกตด้วยว่าเมื่อเสือเป็นสัตว์ เสือจะสูญเสียคุณลักษณะและหน้าที่เฉพาะตัวไป จากมุมมองการคิดของมนุษย์ การพูดว่า "เสือเป็นสัตว์" เป็นวิธีการคิดแบบสูงขึ้นซึ่งคล้ายกับวัตถุการเปลี่ยนแปลงที่สูงขึ้นในภาษาชวา
สมมติว่าคลาส Animal เป็นคลาสพาเรนต์ของคลาส Tiger เมื่อใช้คลาสย่อยเพื่อสร้างอ็อบเจ็กต์และใส่การอ้างอิงของอ็อบเจ็กต์นี้ลงในอ็อบเจ็กต์ของคลาสพาเรนต์ ตัวอย่างเช่น:
Animala;a=newTiger();
หรือ
Animala;Tigerb=newTiger();a=b;
ในเวลานี้ การเรียกวัตถุว่าเป็นวัตถุที่แปลงขึ้นข้างบนของวัตถุ b ก็เหมือนกับการพูดว่า "เสือก็คือสัตว์" คลาสย่อยมีหน้าที่สร้างเอนทิตีของวัตถุที่ถูกแปลงร่าง แต่วัตถุที่ถูกแปลงร่างจะสูญเสียคุณลักษณะและฟังก์ชันบางอย่างของวัตถุดั้งเดิม
วัตถุการเปลี่ยนแปลงขึ้นไปมีลักษณะดังต่อไปนี้:
(1) อ็อบเจ็กต์ที่แปลงแล้วไม่สามารถดำเนินการกับตัวแปรสมาชิกที่เพิ่มใหม่ของคลาสย่อย และไม่สามารถเรียกเมธอดใหม่ของคลาสย่อยได้
(2) อ็อบเจ็กต์ที่แปลงแล้วสามารถเข้าถึงตัวแปรสมาชิกที่สืบทอดหรือซ่อนโดยคลาสย่อย และยังสามารถเรียกเมธอดที่สืบทอดโดยคลาสย่อยหรือเมธอดอินสแตนซ์ที่ถูกแทนที่โดยคลาสย่อย วัตถุ upcast ดำเนินการวิธีการที่สืบทอดโดยคลาสย่อยหรือวิธีการอินสแตนซ์ที่ถูกแทนที่โดยคลาสย่อย และฟังก์ชันของมันจะเทียบเท่ากับการเรียกวิธีการเหล่านี้บนวัตถุคลาสย่อย ดังนั้น หากคลาสย่อยแทนที่วิธีอินสแตนซ์ของคลาสพาเรนต์ เมื่ออ็อบเจ็กต์อัปคาสต์ของอ็อบเจ็กต์เรียกวิธีอินสแตนซ์นี้ ต้องเรียกใช้เมธอดอินสแตนซ์ที่ถูกแทนที่โดยคลาสย่อย
สังเกต:
(1) อย่าสับสนอ็อบเจ็กต์ที่สร้างโดยคลาสพาเรนต์กับอ็อบเจ็กต์ประเภทอัพของอ็อบเจ็กต์คลาสย่อย
(2) อ็อบเจ็กต์อัปคาสต์ของอ็อบเจ็กต์สามารถถูกบังคับให้แปลงเป็นอ็อบเจ็กต์คลาสย่อยได้ ในขณะนี้ อ็อบเจ็กต์คลาสย่อยมีคุณสมบัติและฟังก์ชันทั้งหมดของคลาสย่อย
(3) คุณไม่สามารถกำหนดการอ้างอิงไปยังวัตถุที่สร้างโดยคลาสแม่ให้กับวัตถุที่ประกาศโดยคลาสย่อยได้ ตัวอย่างเช่น คุณไม่สามารถพูดว่า "บุคคลนั้นเป็นคนจีน"