Heim  >  Artikel  >  Java  >  Warum haben Schnittstellen in Java keine Konstruktoren, abstrakte Klassen jedoch Konstruktoren?

Warum haben Schnittstellen in Java keine Konstruktoren, abstrakte Klassen jedoch Konstruktoren?

PHPz
PHPznach vorne
2023-09-13 18:09:031550Durchsuche

Warum haben Schnittstellen in Java keine Konstruktoren, abstrakte Klassen jedoch Konstruktoren?

Constructor wird verwendet, um nicht statische Mitglieder einer bestimmten Klasse relativ zu einem Objekt zu initialisieren.

Konstruktoren in Schnittstellen

  • Die Schnittstellen in Java haben keine Konstruktoren, da alle Datenelemente in der Schnittstelle standardmäßig public static final sind und Konstanten sind (zur Deklarationszeit zugewiesen).
  • Die Schnittstelle enthält keine Datenelemente und Sie können sie über den Konstruktor initialisieren.
  • Um eine Methode aufzurufen, benötigen wir ein Objekt. Da die Methode in der Schnittstelle keinen Körper hat, besteht keine Notwendigkeit, die Methode in der Schnittstelle aufzurufen.
  • Da wir in der Schnittstelle keine Methoden aufrufen können, besteht keine Notwendigkeit, ein Objekt für die Schnittstelle zu erstellen und keinen Konstruktor darin einzuschließen.

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

Ausgabe

k value is:30

Konstruktor in der Klasse

  • Der Zweck von Konstruktor in der Klasse besteht darin, Felder zu initialisieren, aber nicht darin, Objekte zu erstellen.
  • Wenn wir versuchen, eine neue Instanz einer abstrakten Superklasse zu erstellen, gibt der Compiler einen Fehler aus.
  • Wir können jedoch eine abstrakte Klasse erben und ihren Konstruktor verwenden, um sie durch Festlegen ihrer Variablen zu steuern.

Beispiel 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());
   }
}

Ausgabe

Manager Name is:Adithya
Salary is:50000.0

Das obige ist der detaillierte Inhalt vonWarum haben Schnittstellen in Java keine Konstruktoren, abstrakte Klassen jedoch Konstruktoren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen