Abstrakter Klassenkonstruktor in Java

Sheeraz Gul 12 Oktober 2023
Abstrakter Klassenkonstruktor in Java

Ein Konstruktor wird verwendet, um ein Objekt zu initialisieren, das mit seinem Namen aufgerufen wird, und der Name des Konstruktors ist derselbe wie der Name der Klasse.

Die abstrakte Klasse wird mit einem abstrakten Schlüsselwort deklariert, abstrakte Klassen haben auch einen Konstruktor, und wenn wir keinen Konstruktor in der abstrakten Klasse definieren, gibt uns JVM einen Standardkonstruktor.

Dieses Tutorial zeigt, wie Sie einen Konstruktor in einer abstrakten Klasse in Java erstellen.

Abstrakter Klassenkonstruktor in Java

Wenn wir angeben, dass eine Klasse abstrakt ist, kann sie nicht instanziiert werden, aber das bedeutet nicht, dass sie keinen Konstruktor haben kann. Die abstrakte Klasse kann unter zwei Bedingungen einen Konstruktor haben.

  1. Wenn wir die Felder einer abstrakten Klasse initialisieren wollen, bevor die Instanziierung einer Unterklasse erfolgt ist.
  2. Wenn wir letzte Felder in der abstrakten Klasse definiert haben, sie aber nicht in der Deklaration initialisiert werden, kann der Konstruktor verwendet werden, um diese Felder zu initialisieren.

Wenn wir keinen Konstruktor definieren, definiert die JVM einen Standardkonstruktor für uns. Bevor wir einen Konstruktor definieren, müssen wir die folgenden Punkte berücksichtigen.

  1. Die Konstruktoren der Unterklasse können einen Konstruktor aus der abstrakten Klasse aufrufen, und sie müssen ihn aufrufen, wenn es keinen Argumentkonstruktor in der abstrakten Klasse gibt.
  2. Alle Konstruktoren sollten in der abstrakten Klasse als geschützt definiert werden, da es keinen Vorteil hat, sie als öffentlich zu definieren.
  3. Wir können auch mehr als einen Konstruktor mit unterschiedlichen Argumenten definieren.

Lassen Sie uns ein Beispiel für den Konstruktor der abstrakten Klasse haben, der das Bruttogehalt, die Steuern und das Nettogehalt berechnet, indem die abstrakte Klasse mit dem Konstruktor erweitert wird.

Codebeispiel:

package delftstack;

abstract class SalaryCal {
  double salary;
  protected SalaryCal() {
    salary = 0;
  }
  protected SalaryCal(double a) {
    salary = a;
  }
  // Calculate is now an abstract method
  abstract double Calculate();
}

class Salary extends SalaryCal {
  Salary(double a) {
    super(a);
  }
  // override calculate for Salary
  double Calculate() {
    System.out.println("Inside the Calculate method for Salary.");
    double allowance = salary * 0.1; // 10 Percent other allowances
    return salary + allowance;
  }
}

class Tax extends SalaryCal {
  Tax(double a) {
    super(a);
  }
  // override calculate for Tax
  double Calculate() {
    System.out.println("Inside the Calculate method for Tax.");
    return salary * 0.2; // 20 percent tax
  }
}

public class Abstract_Constructor {
  public static void main(String args[]) {
    // SalaryCal Demo = new SalaryCal(1000); // illegal now because we can not instantiate an object
    double Salary = 1000;
    Salary S = new Salary(Salary);
    Tax T = new Tax(Salary);

    SalaryCal Salary_Calculation; // this is OK, no object is created

    // Gross Salary Calculation
    Salary_Calculation = S;
    double gross_salary = Salary_Calculation.Calculate();
    System.out.println("The Gross Salary is " + gross_salary);

    // Tax Calculation
    Salary_Calculation = T;
    double salary_tax = Salary_Calculation.Calculate();
    System.out.println("The total Tax on Salary is " + salary_tax);

    // Net Salary
    double net_salary = gross_salary - salary_tax;
    System.out.println("The Net Salary is " + net_salary);
  }
}

Die Superklasse SalaryCal ist als abstrakt deklariert und hat zwei Konstruktoren, einen ohne Argumente, was der Standard ist, und einen mit Argumenten. Die beiden konkreten Klassen Lohn und Steuer berechnen den Bruttolohn und die Steuer.

Abstrakte Konstruktoren werden häufig zur Gehaltsberechnung verwendet. Die main-Methode demonstriert auch, dass wir die Abstract-Klasse nicht instanziieren können.

Wir können die abstrakte Klasse verwenden, um die Werte von konkreten Klassen zu erhalten.

Ausgang:

Inside the Calculate method for Salary.
The Gross Salary is 1100.0
Inside the Calculate method for Tax.
The total Tax on Salary is 200.0
The Net Salary is 900.0
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Verwandter Artikel - Java Constructor