Computer >> Máy Tính >  >> Lập trình >> C ++

Kế thừa trong C ++ so với Java

Trong C ++ và Java, có khái niệm Kế thừa. Các thuộc tính kế thừa được sử dụng để sử dụng lại mã và cũng tạo mối quan hệ giữa hai đối tượng. Ở đây chúng ta sẽ thấy một số khác biệt cơ bản giữa kế thừa trong C ++ và kế thừa trong Java.

  • Trong Java, tất cả các lớp đều mở rộng lớp Đối tượng. Vì vậy luôn tồn tại một cây kế thừa cấp một của các lớp. Lớp đối tượng hiện diện ở gốc của cây. Hãy để chúng tôi kiểm tra xem điều này có đúng hay không bằng cách sử dụng một mã đơn giản.

Ví dụ

//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));
   }
}

Đầu ra

This is constructor of MyClass.
obj is an instance of Object: true
  • Trong Java, bot có thể truy cập trực tiếp các thành viên của lớp grandparent.

  • Khả năng hiển thị được bảo vệ có một chút khác biệt trong Java so với C ++. Trong Java, các thành viên được bảo vệ của lớp cơ sở có thể truy cập được từ lớp khác của cùng một gói, ngay cả khi lớp đó không được dẫn xuất từ ​​lớp cơ sở. Tại đây, thành viên được bảo vệ của MyClass có thể được truy cập từ Test.

Ví dụ

//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);
   }
}

Đầu ra

x is: 10 y is: 20
  • Trong Java, chúng tôi java để sử dụng từ khóa mở rộng để kế thừa. Trong C ++, chúng ta có thể xác định khả năng hiển thị của thừa kế như công khai, bảo vệ và riêng tư, nhưng ở đây chúng ta không thể thay đổi khả năng hiển thị. Vì vậy, nếu một số thành viên là công khai hoặc được bảo vệ trong lớp cơ sở, chúng cũng sẽ được công khai hoặc được bảo vệ trong lớp dẫn xuất.

  • Trong java, tất cả các phương thức đều là ảo theo mặc định. Trong C ++, chúng ta phải chỉ định từ khóa ảo.

  • Trong C ++, chúng ta có thể sử dụng đa kế thừa. Trong Java, chúng ta không thể tạo đa kế thừa một cách trực tiếp. Để giảm sự mơ hồ, java hỗ trợ các giao diện để có được hiệu ứng của đa kế thừa. Các giao diện hoàn toàn là lớp cơ sở trừu tượng, không có chức năng nào hoàn chỉnh, vì vậy không có sự mơ hồ.