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

Tại sao một giao diện không có một phương thức khởi tạo trong khi một lớp trừu tượng có một phương thức khởi tạo trong Java?

A Khối mã lệnh là khởi tạo các thành viên không tĩnh của một lớp cụ thể đối với một đối tượng.

Khối mã lệnh trong giao diện

  • Một Giao diện trong Java không có hàm tạo bởi vì tất cả các thành viên dữ liệu trong giao diện là công khai tĩnh cuối cùng theo mặc định, chúng là hằng số (gán giá trị tại thời điểm khai báo).
  • Không có thành viên dữ liệu nào trong giao diện để khởi tạo chúng thông qua hàm tạo.
  • Để gọi một phương thức, chúng ta cần một đối tượng, vì các phương thức trong giao diện không có phần thân nên không cần gọi các phương thức trong giao diện.
  • Vì chúng ta không thể gọi các phương thức trong giao diện, nên không cần tạo đối tượng cho giao diện và không cần có hàm tạo trong đó.

Ví dụ 1

interface Addition {
   int add(int i, int j);
}
public class Test implements Addition {
   public int add(int i, int j) {
      int k = i+j;
      return k;
   }
   public static void main(String args[]) {
      Test t = new Test();
      System.out.println("k value is:" + t.add(10,20));
   }
}

Đầu ra

Giá trị
k value is:30

Khối mã lệnh trong một lớp

  • Mục đích của hàm tạo trong một lớp học được sử dụng để khởi tạo các trường nhưng không dùng để xây dựng các đối tượng.
  • Khi chúng tôi cố gắng tạo một phiên bản mới của lớp cha trừu tượng, trình biên dịch sẽ báo lỗi.
  • Tuy nhiên, chúng ta có thể kế thừa một lớp trừu tượng và sử dụng hàm tạo của nó bằng cách đặt các biến của nó.

Ví dụ 2

abstract class Employee {
   public String empName;
   abstract double calcSalary();
   Employee(String name) {
      this.empName = name; // Constructor of abstract class  
   }
}
class Manager extends Employee {
   Manager(String name) {
      super(name); // setting the name in the constructor of subclass
   }
   double calcSalary() {
      return 50000;
   }
}
public class Test {
   public static void main(String args[]) {
      Employee e = new Manager("Adithya");
      System.out.println("Manager Name is:" + e.empName);
      System.out.println("Salary is:" + e.calcSalary());
   }
}

Đầu ra

Manager Name is:Adithya
Salary is:50000.0