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

เหตุใดอินเทอร์เฟซจึงไม่มีคอนสตรัคเตอร์ในขณะที่คลาสนามธรรมมีคอนสตรัคเตอร์ใน Java


ตัวสร้าง คือการเริ่มต้นสมาชิกที่ไม่คงที่ของคลาสเฉพาะที่เกี่ยวกับวัตถุ

ตัวสร้างในอินเทอร์เฟซ

  • อินเทอร์เฟซ ใน Java ไม่มี คอนสตรัคเตอร์ เนื่องจากสมาชิกข้อมูลทั้งหมดในอินเทอร์เฟซเป็น แบบคงที่สาธารณะสุดท้าย โดยค่าเริ่มต้น ค่าเหล่านี้เป็นค่าคงที่ (กำหนดค่า ณ เวลาที่ประกาศ)
  • ไม่มีสมาชิกข้อมูลในอินเทอร์เฟซเพื่อเริ่มต้นผ่านตัวสร้าง
  • ในการเรียกใช้เมธอด เราจำเป็นต้องมีอ็อบเจ็กต์ เนื่องจากเมธอดในอินเทอร์เฟซไม่มีเนื้อหา จึงไม่จำเป็นต้องเรียกใช้เมธอดในอินเทอร์เฟซ
  • เนื่องจากเราไม่สามารถเรียกเมธอดในอินเทอร์เฟซได้ จึงไม่มีความจำเป็นในการสร้างวัตถุสำหรับอินเทอร์เฟซ และไม่จำเป็นต้องมีตัวสร้างในนั้น

ตัวอย่างที่ 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));
   }
}

ผลลัพธ์

k value is:30

ตัวสร้างในคลาส

  • วัตถุประสงค์ของ คอนสตรัคเตอร์ ใน คลาส ใช้เพื่อเริ่มต้นฟิลด์แต่ไม่ใช้เพื่อสร้างวัตถุ
  • เมื่อเราพยายามสร้างตัวอย่างใหม่ของ abstract superclass คอมไพเลอร์จะแสดงข้อผิดพลาด
  • อย่างไรก็ตาม เราสามารถสืบทอดคลาสนามธรรมและใช้ประโยชน์จากคอนสตรัคเตอร์ได้โดยการตั้งค่าตัวแปร

ตัวอย่างที่ 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());
   }
}

ผลลัพธ์

Manager Name is:Adithya
Salary is:50000.0