ใน C ++ และ Java มีแนวคิดเรื่อง Inheritance คุณสมบัติการสืบทอดถูกใช้เพื่อนำรหัสกลับมาใช้ใหม่และสร้างความสัมพันธ์ระหว่างสองอ็อบเจ็กต์ เราจะเห็นความแตกต่างพื้นฐานระหว่างการสืบทอดใน C++ และการสืบทอดใน Java
-
ใน Java คลาสทั้งหมดขยายคลาสอ็อบเจ็กต์ ดังนั้นจึงมีต้นไม้มรดกระดับเดียวของคลาสเสมอ คลาสอ็อบเจ็กต์อยู่ที่รูทของทรี ให้เราตรวจสอบว่าเป็นจริงหรือไม่โดยใช้รหัสง่ายๆ
ตัวอย่าง
//This is present in the different file named MyClass.java public class MyClass { MyClass() { System.out.println("This is constructor of MyClass."); } } //This is present the different file named Test.Java public class Test { public static void main(String[] args) { MyClass obj = new MyClass(); System.out.println("obj is an instance of Object: " + (obj instanceof Object)); } }
ผลลัพธ์
This is constructor of MyClass. obj is an instance of Object: true
-
ใน Java สมาชิกของคลาสปู่ย่าตายายสามารถเข้าถึงได้โดยตรง
-
การมองเห็นที่ได้รับการป้องกันนั้นแตกต่างกันเล็กน้อยใน Java เมื่อเทียบกับ C ++ ใน Java สมาชิกที่มีการป้องกันของคลาสฐานสามารถเข้าถึงได้จากคลาสอื่นของแพ็คเกจเดียวกัน แม้ว่าคลาสนั้นจะไม่ได้มาจากคลาสพื้นฐาน ที่นี่สมาชิกที่ได้รับการคุ้มครองของ MyClass สามารถเข้าถึงได้จากการทดสอบ
ตัวอย่าง
//This is present in the different file named MyClass.java public class MyClass { protected int x = 10; protected int y = 20; } //This is present the different file named Test.Java public class Test { public static void main(String[] args) { MyClass obj = new MyClass(); System.out.println("x is: " + obj.x + " y is: " + obj.y); } }
ผลลัพธ์
x is: 10 y is: 20
-
ใน Java เรา java ใช้คีย์เวิร์ดขยายสำหรับการสืบทอด ใน C++ เราสามารถกำหนดการมองเห็นของการสืบทอดได้ เช่น สาธารณะ มีการป้องกัน และส่วนตัว แต่ที่นี่เราไม่สามารถเปลี่ยนการมองเห็นได้ ดังนั้นหากสมาชิกบางคนเป็นแบบสาธารณะหรือได้รับการปกป้องในคลาสพื้นฐาน สมาชิกเหล่านั้นก็จะถูกเปิดเผยหรือได้รับการปกป้องในคลาสที่ได้รับเช่นกัน
-
ใน java วิธีการทั้งหมดเป็นแบบเสมือนโดยค่าเริ่มต้น ใน C++ เราต้องระบุคีย์เวิร์ดเสมือน
-
ใน C++ เราสามารถใช้การสืบทอดหลายรายการได้ ใน Java เราไม่สามารถสร้างการสืบทอดหลายรายการได้โดยตรง เพื่อลดความกำกวม java สนับสนุนอินเทอร์เฟซเพื่อรับผลกระทบของการสืบทอดหลายรายการ อินเทอร์เฟซเป็นคลาสพื้นฐานที่เป็นนามธรรมล้วนๆ ซึ่งไม่มีฟังก์ชันใดสมบูรณ์ ดังนั้นจึงไม่มีความกำกวม