OOP มีองค์ประกอบและการทดแทน
C ++ มีหลายมรดกความเชี่ยวชาญแม่แบบฝังและความหมายค่า / ย้าย / ตัวชี้
Java มีการสืบทอดและอินเตอร์เฟสเดียวฝังและซีแมนทิกส์อ้างอิง
วิธีการทั่วไปที่โรงเรียน OOP ใช้ภาษาเหล่านี้คือการใช้การสืบทอดสำหรับการทดแทนวัตถุและฝังเพื่อการแต่งเพลง แต่คุณต้องมีบรรพบุรุษร่วมกันและวิธีการใช้งาน runtime (ใน C ++ เรียกว่าdynamic_cast
ใน Java เป็นเพียงการถามอินเตอร์เฟซจากที่อื่น)
Java ทำสิ่งทั้งหมดนี้ด้วยjava.lang.Object
ลำดับชั้นที่รูทของตัวเอง C ++ ไม่มีรูททั่วไปที่กำหนดไว้ล่วงหน้าดังนั้นอย่างน้อยคุณควรนิยามมันเพื่อให้เป็น "รูปภาพ" เดียวกัน (แต่นี่เป็นการ จำกัด ความเป็นไปได้ของ C ++ บางอย่าง ... )
หลังจากนั้นความเป็นไปได้ในการรวบรวม polymorphism เวลา (คิดว่าจะ CRTP) และความหมายตามตัวอักษรสามารถเสนอทางเลือกอื่น ๆ กับวิธีการที่แนวคิดของ "วัตถุ OOP" สามารถพอร์ตในโปรแกรม C ++
คุณสามารถจินตนาการถึงความนอกรีตในการใช้การแปลงฝังและนัยในการจัดการการทดแทนและการสืบทอดส่วนตัวเพื่อจัดการองค์ประกอบ (แน่นอนวิธีนี้มีอายุน้อยกว่าอีก 20 ปีดังนั้นอย่าคาดหวังว่าจะได้รับการสนับสนุนจากชุมชนในการทำเช่นนั้น)
หรือคุณสามารถนึกภาพฐานเสมือนจริงให้กับคลาสทั้งหมด, รูปแบบอินเตอร์เฟส (ไม่มีการนำไปใช้) ไปยังคลาสสุดท้าย (นำไปใช้อย่างสมบูรณ์) โดยผ่านส่วนที่นำไปใช้งานบางส่วนแม้กระทั่งกลุ่มอินเตอร์เฟสโดยใช้ "dominance" เป็นการส่งผ่านจาก - รูปสี่เหลี่ยมด้านขนาน "รูปแบบการสืบทอด
การเปรียบเทียบ OOP กับ java กับ C ++ สมมติว่ามีเพียงวิธีเดียวเท่านั้นและ OOP เท่านั้นที่จำกัดความสามารถของทั้งสองภาษา
การบังคับให้ C ++ ยึดมั่นกับสำนวนการเข้ารหัสของ Java อย่างเคร่งครัดคือการทำให้ C ++ บังคับให้ Java ทำตัวเป็นภาษา C ++ เหมือนกับภาษาที่กำลังทำลาย Java
ไม่ใช่เรื่องของ "ความอ่อนไหว" แต่มี "กลไกการรวม" ที่แตกต่างกันทั้งสองภาษามีวิธีที่แตกต่างกันในการรวมเข้าด้วยกันซึ่งทำให้สำนวนบางอย่างมีประโยชน์มากกว่าในภาษาหนึ่งมากกว่าอีกภาษาหนึ่งและในทางกลับกัน