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. Wie 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.
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
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 .- 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.
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;
}
GO TO FULL VERSION