Maison  >  Article  >  Java  >  Pourquoi les interfaces n’ont-elles pas de constructeurs en Java, alors que les classes abstraites ont des constructeurs ?

Pourquoi les interfaces n’ont-elles pas de constructeurs en Java, alors que les classes abstraites ont des constructeurs ?

PHPz
PHPzavant
2023-09-13 18:09:031550parcourir

Pourquoi les interfaces n’ont-elles pas de constructeurs en Java, alors que les classes abstraites ont des constructeurs ?

Constructor est utilisé pour initialiser les membres non statiques d'une classe spécifique par rapport à un objet.

Constructeurs dans les interfaces

  • Les interfaces en Java n'ont pas de constructeurs, car toutes les données membres de l'interface sont public static final par défaut, et ce sont des constantes (attribuées au moment de la déclaration).
  • Il n'y a pas de données membres dans l'interface et vous pouvez les initialiser via le constructeur.
  • Pour appeler une méthode, nous avons besoin d'un objet Comme la méthode dans l'interface n'a pas de corps, il n'est pas nécessaire d'appeler la méthode dans l'interface.
  • Comme nous ne pouvons pas appeler de méthodes dans l'interface, il n'est pas nécessaire de créer un objet pour l'interface et il n'est pas nécessaire d'y inclure un constructeur.

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

Sortie

k value is:30

Constructeur en classe

  • Le but de constructeur en classe est d'initialiser des champs, mais pas de construire des objets.
  • Lorsque nous essayons de créer une nouvelle instance de super classe abstraite, le compilateur renvoie une erreur.
  • Cependant, nous pouvons hériter d'une classe abstraite et utiliser son constructeur pour la contrôler en définissant ses variables.

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

Sortie

Manager Name is:Adithya
Salary is:50000.0

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer