Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การสืบทอดใน C ++ กับ Java


ใน 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 สนับสนุนอินเทอร์เฟซเพื่อรับผลกระทบของการสืบทอดหลายรายการ อินเทอร์เฟซเป็นคลาสพื้นฐานที่เป็นนามธรรมล้วนๆ ซึ่งไม่มีฟังก์ชันใดสมบูรณ์ ดังนั้นจึงไม่มีความกำกวม