logo

Konstruktor in der abstrakten Klasse in Java

Eine abstrakte Klasse in Java ist eine Klasse, die nicht direkt instanziiert werden kann. Das Ziel besteht darin, als Basisklasse zu fungieren, von der die anderen Klassen erben und erweitern können. Eines der wichtigen Merkmale einer abstrakten Klasse ist die Fähigkeit, die Konstruktoren zu definieren, die als spezielle Methoden bezeichnet werden und aufgerufen werden, wenn ein Objekt einer Klasse erstellt wird.

Regeln, die beim Definieren von Konstruktoren in einer abstrakten Klasse befolgt werden müssen:

  1. Abstrakte Klassen können Konstruktoren haben, sie können jedoch nicht direkt instanziiert werden. Die Konstruktoren werden verwendet, wenn eine konkrete Unterklasse erstellt wird.
  2. In einer abstrakten Klasse kann es eine oder mehrere abstrakte Methoden geben, was bedeutet, dass diese Methoden nicht durch die Klasse implementiert werden. Um instanziiert zu werden, sollte eine Unterklasse, die eine abstrakte Klasse um abstrakte Methoden erweitert, die Methoden implementieren. Das bedeutet, dass jede innerhalb einer abstrakten Klasse deklarierte abstrakte Methode eine Implementierung haben muss, wenn eine Unterklasse eine konkrete Klasse sein und instanziiert werden muss. Mit anderen Worten: Die Funktionalität, die die abstrakte Klasse offen gelassen hat, muss von der Unterklasse ausgefüllt werden.
  3. Wenn eine Unterklasse eine abstrakte Klasse mit Konstruktoren erweitert, muss die Unterklasse mithilfe des Schlüsselworts super einen der Konstruktoren innerhalb der Oberklasse aufrufen. Weil der Superklassenkonstruktor den Zustand des Objekts initialisiert und alle wichtigen Ressourcen zusammenfasst. Wenn die Unterklasse keinen der Konstruktoren in der Oberklasse aufruft, wird das Objekt nicht richtig initialisiert und funktioniert nicht effizient/korrekt.
  4. Es ist möglich, in einer abstrakten Klasse, ähnlich wie in anderen Klassen, mehr als einen Konstruktor zu definieren. Allerdings muss jeder Konstruktor mit einer anderen Parameterliste definiert werden. Es ermöglicht Unterklassen, basierend auf ihren spezifischen Anforderungen auszuwählen, welcher Konstruktor aufgerufen werden soll.

Arten von Konstruktoren, die mithilfe der abstrakten Klasse implementiert werden:

Es gibt drei Arten von Konstruktoren:

  1. Standardkonstruktor
  2. Parametrisierter Konstruktor
  3. Konstruktor kopieren

1. Standardkonstruktor: Der Konstruktor wird automatisch über Java erstellt, wenn kein anderer Konstruktor in der Klasse definiert ist. Es verfügt über keine Parameter und führt außer der Initialisierung von Standardwerten für Klassenfelder keine weiteren Schritte aus.

ALGORITHMUS:

Schritt 1: Definieren Sie eine abstrakte Klasse mit dem Namen „Shape“.

Operatoren in der Python-Programmierung

Schritt 2: Deklarieren Sie zwei Ganzzahlvariablen „x“ und „y“ als geschützt.

Schritt 3: Erstellen Sie einen Standardkonstruktor für die Shape-Klasse und setzen Sie „x“ und „y“ auf 0.

Schritt 4: Erstellen Sie nun eine Methode „getArea()“. Es handelt sich um eine abstrakte Methode, die einen doppelten Wert zurückgibt

Schritt 5: Erstellen Sie dann zwei nicht abstrakte Methoden „printPosition()“ und „setPosition(int x, int y)“, die zur Shape-Klasse gehören.

Schritt 6: Die setPosition-Methode legt die Werte von x und y fest.

Schritt 7: Die printPosition-Methode druckt die Werte von x und y.

Schritt 8: Definieren Sie eine Circle-Klasse, die die Shape-Klasse erweitert.

Schritt 9: Deklarieren Sie eine Double-Variable mit dem Namen „radius“ als geschützt in der Circle-Klasse.

Schritt 10: Definieren Sie einen Konstruktor für die Circle-Klasse, der einen doppelten Wert für den Radius akzeptiert.

Schritt 11: Implementieren Sie die getArea-Methode für die Circle-Klasse, die die Fläche des Kreises berechnet.

Schritt 12: Definieren Sie eine Square-Klasse, die die Shape-Klasse erweitert.

Schritt 13: Deklarieren Sie eine Double-Variable mit dem Namen „side“ als geschützt in der Square-Klasse.

Schritt 14: Definieren Sie einen Konstruktor für die Square-Klasse, der einen Double-Wert für die Seite akzeptiert.

Schritt 15: Implementieren Sie die getArea-Methode für die Square-Klasse, die die Fläche des Quadrats berechnet.

Schritt 16: Definieren Sie eine Hauptklasse.

Schritt 17: Definieren Sie die Hauptfunktion in der Main-Klasse.

Typoskript für jeden

Schritt 18: Erstellen Sie ein Kreisobjekt und ein Quadratobjekt.

Schritt 19: Rufen Sie die setPosition-Methode sowohl für die Circle- als auch für die Square-Objekte auf.

Schritt 20: Rufen Sie die getArea-Methode sowohl für die Circle- als auch für die Square-Objekte auf und drucken Sie die Ergebnisse aus.

Schritt 21: Rufen Sie die printPosition-Methode sowohl für die Circle- als auch für die Square-Objekte auf und drucken Sie die Ergebnisse aus.

Implementierung:

Hier ist die Umsetzung der oben genannten Schritte

Dateiname: DefaultMain.java

 import java.util.*; abstract class Shape { protected int x; protected int y; // default constructor public Shape() { // initialize default values for fields x = 0; y = 0; } // abstract method to calculate area public abstract double getArea(); // other methods public void setPosition(int x,int y) { this.x=x; this.y=y; } public void printPosition() { System.out.println('The Position: ('+x + ', '+ y +')'); } } class Circle extends Shape { protected double radius; // constructor public Circle(double radius) { this.radius=radius; } // implementation of getArea() for Circle public double getArea() { return Math.PI * radius * radius; } } class Square extends Shape { protected double side; // constructor public Square(double side) { this.side = side; } // implementation of getArea() for Square public double getArea() { return side * side; } } public class DefaultMain { public static void main(String args []) { // create a Circle object Circle circle = new Circle(5); circle.setPosition(2,3); // print the area and position of the Circle object System.out.println('Area of a circle is: '+circle.getArea()); circle.printPosition(); // create a Square object Square square = new Square(4); square.setPosition(5, 7); // print the area and position of the Square object System.out.println('Area of a square is: '+square.getArea()); square.printPosition(); } } 

Ausgabe:

 Area of a circle is: 78.53981633974483 The Position:(2, 3) Area of a square is: 16.0 The Position:(5, 7) 

2. Parametrisierter Konstruktor: Beim Erstellen eines Objekts können Sie mit dieser Art von Konstruktor Argumente an das Objekt übergeben. Wenn Sie das Objekt mit Werten initialisieren möchten, ist dies hilfreich. Der parametrisierte Konstruktor wird mit einem oder mehreren Parametern definiert, und während ein Objekt erstellt wird, werden die an den Konstruktor übergebenen Werte verwendet, um die entsprechenden Felder des Elements zu initialisieren.

ALGORITHMUS:

Schritt 1: Definieren Sie eine abstrakte Klasse Shape.

Schritt 2: Fügen Sie zwei geschützte Instanzvariablen vom Typ int mit den Namen x und y hinzu.

MVC im Spring Framework

Schritt 3: Erstellen Sie einen parametrisierten Konstruktor, der die Instanzvariablen x und y initialisiert und zwei Parameter vom Typ int, x und y akzeptiert.

Schritt 4: Definieren Sie eine abstrakte Klasse Shape.

Schritt 5: Fügen Sie zwei geschützte Instanzvariablen vom Typ int mit den Namen x und y hinzu.

Schritt 6: Erstellen Sie einen parametrisierten Konstruktor, der die Instanzvariablen x und y initialisiert und zwei Parameter vom Typ int, x und y akzeptiert.

Schritt 7: Definieren Sie eine Klasse Circle, die Shape erweitert.

Schritt 8: Fügen Sie eine geschützte Instanzvariable vom Typ doppelt benannter Radius hinzu.

Schritt 9: Definieren Sie einen parametrisierten Konstruktor, der drei Parameter vom Typ int x, y und double radius akzeptiert und die Instanzvariablen x, y und radius mit dem Schlüsselwort super() initialisiert.

Schritt 10: Implementieren Sie die abstrakte Methode getArea(), indem Sie die Fläche von Circle berechnen.

Schritt 11: Definieren Sie eine Klasse Square, die Shape erweitert.

Schritt 12: Fügen Sie eine geschützte Instanzvariable vom Typ „doppelt benannte Seite“ hinzu.

Schritt 13: Definieren Sie einen parametrisierten Konstruktor, der drei Parameter vom Typ int x, y und double side akzeptiert und die Instanzvariablen x, y und side mit dem Schlüsselwort super() initialisiert.

Schritt 14: Implementieren Sie die abstrakte Methode getArea(), indem Sie die Fläche von Square berechnen.

Schritt 15: Definieren Sie eine Klasse Main.

Schritt 16: Definieren Sie eine statische Methode namens main(), die den Einstiegspunkt des Programms darstellt.

Schritt 17: Erstellen Sie ein Circle-Objekt mit einem parametrisierten Konstruktor.

Schritt 18: Drucken Sie die Fläche und Position des Circle-Objekts mit den Methoden getArea() bzw. printPosition().

Schritt 19: Erstellen Sie ein quadratisches Objekt mit einem parametrisierten Konstruktor.

Schritt 20: Drucken Sie die Fläche und Position des Square-Objekts mit den Methoden getArea() bzw. printPosition().

Schritt 21: Ende des Programms.

Implementierung:

Die Umsetzung der oben genannten Schritte ist unten aufgeführt

Dateiname: ParametrisierteMain.java

 import java.util.*; abstract class Shape { protected int x; protected int y; // parameterized constructor public Shape(int x,int y) { this.x=x; this.y=y; } // abstract method to calculate area public abstract double getArea(); // other methods public void setPosition(int x,int y) { this.x=x; this.y=y; } public void printPosition() { System.out.println('The position: ('+ x+', ' +y+')'); } } class Circle extends Shape { protected double radius; // parameterized constructor public Circle(int x,int y,double radius) { super(x,y); this.radius=radius; } // implementation of getArea() for Circle public double getArea() { return Math.PI * radius * radius; } } class Square extends Shape { protected double side; // parameterized constructor public Square(int x,int y,double side) { super(x, y); this.side = side; } // implementation of getArea() for Square public double getArea() { return side * side; } } public class ParameterizedMain { public static void main(String args []) { // create a Circle object with parameterized constructor Circle circle = new Circle(2, 3, 5); // print the area and position of the Circle object System.out.println('Area of circle is: '+circle.getArea()); circle.printPosition(); // create a Square object with parameterized constructor Square square = new Square(5, 7, 4); // print the area and position of the Square object System.out.println('Area of square is:' +square.getArea()); square.printPosition(); } } 

Ausgabe:

So geben Sie ein Java-Array zurück
 Area of circle is: 78.53981633974483 The position: (2, 3) Area of square is:16.0 The position: (5, 7) 

3. Konstruktor kopieren: Der Kopierkonstruktor wird verwendet, um ein neues Objekt mit den gleichen Werten wie ein vorhandenes Objekt zu erstellen (d. h. das Element wird früher erstellt als). Dies ist nützlich, wenn wir ein neues Objekt erstellen müssen, das eine Replik eines bereits vorhandenen/vorhandenen Objekts sein kann. Der Kopierkonstruktor wird mit nur einem Argument oder einem Parameter definiert, der ein Element derselben Klasse ist. Dann erstellt der Konstruktor ein neues Objekt mit denselben Werten wie ein Parameterobjekt.

ALGORITHMUS:

Schritt 1: Deklarieren Sie eine abstrakte Klasse mit Instanzvariablen und Standardkonstruktor.

Schritt 2: Definieren Sie einen Kopierkonstruktor mit einem Parameter des identischen Klassentyps.

Gimp, wie man die Auswahl aufhebt

Schritt 3: Rufen Sie im Kopierkonstruktor den Kopierkonstruktor der Oberklasse mit dem Schlüsselwort super auf, um die Instanzvariablen vom Parameterobjekt in das neue Objekt zu kopieren.

Schritt 4: Weisen Sie dem neuen Element die Werte aller zusätzlichen Instanzvariablen innerhalb der Unterklasse zu.

Schritt 5: Implementieren Sie die abstrakte Methode, um die Fläche zu berechnen.

Schritt 6: Definieren Sie bei Bedarf weitere Methoden.

Schritt 7: Erstellen Sie in der Hauptfunktion ein Objekt der Klasse.

Schritt 8: Legen Sie die Position und alle anderen Instanzvariablen nach Bedarf fest.

Schritt 9: Erstellen Sie ein neues Objekt, indem Sie den Kopierkonstruktor verwenden und das ursprüngliche Element als Parameter übergeben.

Schritt 10: Drucken Sie den Bereich und die Position sowohl des Originalobjekts als auch des kopierten Objekts.

Implementierung:

Die Umsetzung der oben genannten Schritte ist unten angegeben

Dateiname: CopyMain.java

 import java.util.*; abstract class Shape { protected int x; protected int y; // copy constructor public Shape(Shape other) { this.x=other.x; this.y=other.y; } // default constructor public Shape() { // initialize default values for fields x=0; y=0; } // abstract method to calculate area public abstract double getArea(); // other methods public void setPosition(int x,int y) { this.x =x; this.y =y; } public void printPosition() { System.out.println('Position: (' +x+ ', ' +y+ ')'); } } class Circle extends Shape { protected double radius; // copy constructor public Circle(Circle other) { super(other); this.radius =other.radius; } // constructor public Circle(double radius) { this.radius =radius; } // implementation of getArea() for Circle public double getArea() { return Math.PI * radius * radius; } } class Square extends Shape { protected double side; // copy constructor public Square(Square other) { super(other); this.side =other.side; } // constructor public Square(double side) { this.side=side; } // implementation of getArea() for Square public double getArea() { return side * side; } } public class CopyMain { public static void main(String[] args) { // create a Circle object Circle circle1 = new Circle(5); circle1.setPosition(2,3); // create a copy of the Circle object using the copy constructor Circle circle2 = new Circle(circle1); // print the area and position of the original and copied Circle objects System.out.println('Original Area of circle: ' +circle1.getArea()); circle1.printPosition(); System.out.println('Copied Area of circle: '+circle2.getArea()); circle2.printPosition(); // create a Square object Square square1 =new Square(4); square1.setPosition(5,7); // create a copy of the Square object using the copy constructor Square square2 = new Square(square1); // print the area and position of the original and copied Square objects System.out.println('Original Area of square: '+square1.getArea()); square1.printPosition(); System.out.println('Copied Area of square: '+square2.getArea()); square2.printPosition(); } } 

Ausgabe:

 Original Area of circle: 78.53981633974483 Position: (2, 3) Copied Area of circle: 78.53981633974483 Position: (2, 3) Original Area of square: 16.0 Position: (5, 7) Copied Area of square: 16.0 Position: (5, 7)