JavaRush /Java-Blog /Random-DE /Kaffeepause Nr. 107. Konstruktormethode in Java I Konstru...

Kaffeepause Nr. 107. Konstruktormethode in Java I Konstruktorüberladung. Abstrakte Java-Klassen und -Schnittstellen

Veröffentlicht in der Gruppe Random-DE

Konstruktormethode in Java I Konstruktorüberladung

Quelle: Objektorientierte Programmierung77 Was ist ein Konstruktor ? Dabei handelt es sich um einen speziellen Methodentyp, dessen Name mit dem Namen der Klasse übereinstimmt und die bestimmt, wie das Objekt beim Erstellen initialisiert wird. Kaffeepause Nr. 107.  Konstruktormethode in Java I Konstruktorüberladung.  Abstrakte Java-Klassen und -Schnittstellen - 1Wie andere Methoden können wir auch eine Konstruktormethode in unserem Java-Programm definieren , aber im Gegensatz zu anderen Methoden können wir den Konstruktor nicht direkt aufrufen; Java ruft den Konstruktor automatisch auf, wenn ein Objekt erstellt wird. Wenn wir das Schlüsselwort new verwenden , um ein Objekt einer Klasse zu erstellen, führt Java drei Dinge aus:
  • Reserviert Speicher für ein Objekt.
  • Initialisieren Sie diese Objektinstanzvariable mit ihrem Anfangs- oder Standardwert.
  • Ruft den Methodenkonstruktor der Klasse auf.
Wenn eine Klasse keine Konstruktormethode definiert, erstellen wir dennoch ein Objekt dieser Klasse, müssen jedoch eine Instanzvariable festlegen oder andere Methoden aufrufen, die anschließend das Objekt mit diesem Objekt initialisieren müssen. Durch die Definition einer Konstruktormethode in unseren eigenen Klassen können wir die Anfangswerte einer Instanzvariablen festlegen, eine auf dieser Variablen basierende Methode aufrufen oder Methoden für andere Objekte aufrufen oder die Anfangseigenschaften unseres Objekts berechnen . Wir können den Konstruktor auch wie normale Methoden überladen, um ein Objekt zu erstellen, das bestimmte Eigenschaften basierend auf dem Argument hat, das wir an new übergeben .

Grundlegender Konstruktor

Per Definition sieht Constructor wie eine reguläre Methode mit zwei Hauptunterschieden aus.
  • Konstruktor- und Klassenname sind immer gleich.
  • Es gibt keinen Rückgabetyp
Die folgende Tabelle zeigt beispielsweise eine einfache Person- Klasse mit einem Konstruktor, der seine Instanzvariable basierend auf dem neuen Argument initialisiert . Die Klasse enthält außerdem eine Methode, mit der sich ein Objekt vorstellen kann, und eine main()- Methode zum Testen jeder dieser Klassen.
class Person
{
    String name;
    int age;

    Person (String n, int a)
{
    name = n;
    age = a;
}

void printPerson ()
{
System.out.print("Hi, I am " +name);
System.out.println(" I am "+ age + " years old.");
}

public static void main(String args[])
{

    Person p;

    p = new Person ("Ajab", 20);
    p.printPerson();

    p = new Person ("Rizwan", 30);
    p.printPerson();
Wir erhalten die Ausgabe:
Hallo, ich bin Ajab. Ich bin 20 Jahre alt. Hallo, ich bin Rizwan. ich bin 30 Jahre alt

Konstruktorüberladung

Wie andere Methoden kann Constructor auch unterschiedliche Anzahlen und Typen von Parametern akzeptieren, sodass Objekte mit bestimmten Eigenschaften erstellt werden können oder Constructor Eigenschaften basierend auf unterschiedlichen Eingabetypen berechnen kann. Beispielsweise erstellt die MyRectone- Klasse in einer bestimmten Tabelle einen MyRectone- Konstruktor und übergibt einen anderen Parameter, anstatt unterschiedliche Methoden für die angegebenen Argumente zu erstellen.
class MyRectone
 {

    int x1 = 0;
    int y1 = 0;
    int x2 = 0;
    int y2 = 0;

MyRectone ( int x1, int x2, int x2, int y2)
 {

    this.x1 = x1;
    this.y1 = y1;
    this.x2 = x2;
    this.y2 = y2;

}

MyRectone (Point topLeft, Point bottomRight)
 {

    x1 = topLeft.x;
    y1 = topLeft.y;
    x2 = bottomRight.x;
    y2 = bottomRight.y;

}

MyRectone ( Point topLeft, int w, int h)
{

    x1 = topLeft.x;
    y1 = top left.y;
    x2 = ( x1 + w);
    y2 = (y1 + h);

}

void printRect ()
{

    System.out.print ("MyRectone: <" + x1 + ", " + y1);
    system.out.println (", " + x2 + " ,"+ y2 + ">");

}

public static void main (String args [] )
{

    MyRectone rect;
    System.out.println ("Calling MyRectone with coordinates 35,35 70,70");

    rect = new MyRectone (35,35,70,70);
    rect.printRect();

    System.out.println ("Calling MyRectone with coordinates (15,15) (30,30)");
    rect = new MyRectone (15,15,30,30);
    rect.printRect();

    System.out.print (" Calling buildRect w/1 point (10,10),");
    System.out.println ("width (50) and height (50)");
    rect = new MyRectone ( new Point (10,10), 50, 50);
    rect.printRect();
Abschluss:
Aufruf von MyRectone mit den Koordinaten 35,35 70,70: MyRectone: <35,35,70,70> Aufruf von buildRect mit 1 Punkten (15,15), (30,30): MyRectone: <15,15,30,30 > Aufruf von buildRect mit 1 Punkt (10,10), Breite (50) und Höhe (50): MyRectone:<10,10,50,50>

Aufruf eines anderen Konstruktors

Ein Konstruktor kann eine Obermenge eines anderen in Ihrer Klasse definierten Konstruktors sein; das heißt, sie können sich gleich verhalten und noch ein bisschen mehr. Anstatt identisches Verhalten über mehrere Konstruktormethoden in unserer Klasse hinweg zu duplizieren, ist es sinnvoll, diesen ersten Konstruktor einfach aus dem Hauptteil des zweiten Konstruktors aufrufen zu können. Java stellt hierfür eine spezielle Syntax zur Verfügung. Um einen in der aktuellen Klasse definierten Konstruktor aufzurufen, verwenden Sie dieses Formular:
this (arg1, arg2, arg3… ..);
Die Argumente hierfür sind natürlich die Argumente des Konstruktors.

Abstrakte Java-Klassen und -Schnittstellen

Quelle: Dev.to Eine abstrakte Klasse ist eine Klasse, die über einige Methoden ohne vollständige Definition und den abstrakten Modifikator verfügt . Kaffeepause Nr. 107.  Konstruktormethode in Java I Konstruktorüberladung.  Abstrakte Java-Klassen und -Schnittstellen - 2
  • Sie können kein Objekt mit dem Konstruktor einer abstrakten Klasse erstellen.
  • Sie können eine abstrakte Klasse als Basisklasse verwenden, um eine abgeleitete Klasse zu definieren.
  • Eine abstrakte Klasse verfügt über mindestens eine abstrakte Methode.
  • Abstrakte Methode : Hat einen Header wie eine reguläre Methode, jedoch ohne Körper und erfordert den abstrakten Modifikator und ein Semikolon.
  • Eine abstrakte Methode kann nicht privat sein.
  • Eine abstrakte Klasse kann ein Typ sein.
Beispiel:
public abstract class Example{
  private String data1;
  private double data2;

public abstract double getPay();
}
Schnittstelle : Definiert eine Reihe von Methoden, über die jede Klasse verfügen muss, die diese Schnittstelle implementiert.
  • Eine Schnittstelle ist ein Typ.
  • Es enthält Methodenheader ohne Definition und ohne Instanzvariablen:
public interface Interface1{
public void method1();
public int method2();
}
Um eine Schnittstelle zu implementieren, muss eine Klasse zwei Dinge tun:
  • Include implementiert InterfaceName .
  • Die Klasse muss alle in der Schnittstelle aufgeführten Methodenheader implementieren.
public class Implementer implements Interface1 {

    @Override
    public void method1() {
    //definition
    }

    @Override
    public int method2() {
    //definition
    }

}
  • Methodenheader werden als öffentlich deklariert .
  • Eine abstrakte Klasse kann auch eine Schnittstelle implementieren. Diese Klasse stellt Definitionen für einige der Methodenheader in der Schnittstelle bereit.
  • Java-Schnittstellen können auch Konstanten enthalten , zum Beispiel:
public interface Constant {

    public static final int JANUARY = 1, FEBRUARY = 2, MARCH = 3;
}
  • Jede Klasse, die die Constant- Schnittstelle implementiert , verfügt automatisch über diese Konstanten, zum Beispiel:
public class Constants implements Constant {

    public static void main(String[] args) {
        System.out.println(JANUARY);
    }

}
  • Sie können die Verwendung von Schnittstellen kombinieren, indem Sie Konstanten und Methodenheader in eine einzige Schnittstelle einbinden.
  • Java unterstützt keine Mehrfachvererbung, daher kann eine Klasse nur eine Basisklasse erweitern. Mithilfe von Schnittstellen kann eine Klasse jedoch mehrere Schnittstellen implementieren:
public class Implementer implements Interface1, Interface2, .. InterfaceN{

}
  • Der Grund, warum eine Java-Klasse nur eine Basisklasse erweitern kann, liegt darin, dass, wenn Java zwei Basisklassen zulässt, die beiden Klassen möglicherweise denselben Methodenheader mit unterschiedlichen Definitionen haben, was zu Inkonsistenzen führt.
  • Zwei Schnittstellen können inkompatibel sein, wenn Sie zwei Konstanten mit demselben Namen und unterschiedlichen Werten definieren:
public interface Interface1{
public static final int ANSWEAR = 0;
}
public interface Interface1{
public static final int ANSWEAR = 3;
}
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION