ความแตกต่างหลัก
| หัวข้อ | C++ | Java |
|---|---|---|
| Root class | ไม่มี common base | ทุกคลาส extends Object โดยนัย |
| Multiple inheritance | รองรับโดยตรง | ไม่รองรับ (ใช้ interface) |
| Virtual methods | ต้องระบุ virtual | ทุก method เป็น virtual โดยนัย |
| Access specifier ในการสืบทอด | public/protected/private inheritance | เฉพาะ public (extends) |
| Protected access | เฉพาะ derived class | เข้าถึงได้จาก class เดียว package ด้วย |
| Grandparent access | เข้าถึงได้ | เข้าถึงไม่ได้โดยตรง |
รายละเอียด
- Java: ใช้
extendsเดียว ไม่ระบุ visibility ได้ มีsuperเรียก parent constructor - C++: รองรับ multiple inheritance, virtual inheritance แก้ diamond problem, ควบคุม visibility ได้
- Protected ใน Java: เข้าถึงได้จาก class ใน package เดียวกันแม้ไม่ได้สืบทอด