private abstract array
In diesem Tutorial werden spezielle Konstruktoren wie der private Konstruktor in Java, Abstract, String, Array, Interface und Destructor in Java erläutert:
In unserem letzten Tutorial zu Konstruktoren in Java haben wir die wichtigen Konzepte für Konstruktoren in Java kennengelernt. Wir haben besprochen, wie ein Konstruktor erstellt wird und welche Regeln zum Definieren von Konstruktoren verwendet werden, zusammen mit den Konstruktortypen usw.
Wir haben auch das Überladen von Konstruktoren und das Verketten von Konstruktoren gelernt. Lassen Sie uns nun bestimmte spezielle Konstruktoren wie einen privaten Konstruktor, einen abstrakten Konstruktor und String- und Array-Konstruktoren in Java diskutieren. Anschließend werden wir Destruktoren in Java diskutieren und schließlich die Unterschiede zwischen Methode und Konstruktoren untersuchen.
=> Schauen Sie sich hier den Java Beginners Guide an.
Beginnen wir mit einem privaten Konstruktor in Java.
Was du lernen wirst:
- Privater Konstruktor In Java
- Abstrakter Klassenkonstruktor in Java
- Schnittstellenkonstruktor In Java
- String-Konstruktor In Java
- Array-Konstruktoren in Java
- Destruktor In Java
- Konstruktor gegen Methode In Java
- Häufig gestellte Fragen
- Fazit
- Literatur-Empfehlungen
Privater Konstruktor In Java
Wie bereits erwähnt, können Konstruktoren in der Java-Klasse Zugriffsspezifizierer zugeordnet haben. Daher können wir private oder öffentliche Konstruktoren haben. Wir werden in unseren nachfolgenden Tutorials mehr über Zugriffsspezifizierer diskutieren und die Konstruktoren noch einmal überprüfen.
Wenn der Konstruktor als privat deklariert ist, kann nur innerhalb der Klasse auf ihn zugegriffen werden. Es kann nicht über eine andere Klasse auf die abgeleiteten Klassen zugreifen. Daher müssen wir eine öffentliche Methode in der Klasse bereitstellen, die private Konstruktoren hat, damit diese öffentliche Methode auf die privaten Konstruktoren zugreifen kann.
In Java kann der private Konstruktor in den folgenden Situationen verwendet werden:
- Zum Implementieren von Singletons.
- Zum Einbeziehen von Fabrikmethoden.
- Für Klassen, die nur statische Elemente haben (Variablen und Methoden).
- Für Klassen mit endgültigen Mitgliedern. (Konstanten - endgültig und statisch).
- Typensichere Aufzählungen verwenden.
Als Beispiel Nehmen wir an einer Singleton-Klasse teil. Eine Singleton-Klasse ist eine Klasse, die jeweils nur ein Objekt zulässt. Wir können den privaten Konstruktor verwenden, um sicherzustellen, dass nicht mehr als ein Objekt erstellt werden kann.
Das folgende Programm implementiert eine Singleton-Klasse mit einem privaten Konstruktor.
class SingleTonClass { //Static Class Reference private static SingleTonClass obj=null; private SingleTonClass(){ System.out.println('SingleTonClass::Private constructor'); } public static SingleTonClass create_object(){ //logic to create only one instance if(obj==null){ obj= new SingleTonClass(); } return obj; } public void display(){ System.out.println('This is SingleTonClass !!'); } } class Main { public static void main(String args()){ //cannot call private constructor directly. SingleTonClass myobject= SingleTonClass.create_object(); myobject.display(); } }
Ausgabe:
Das obige Programm deklariert eine Singleton-Klasse. Wir haben einen privaten Konstruktor und eine öffentliche Methode bereitgestellt, um auf den privaten Konstruktor zuzugreifen und die Anzahl der Objekte auf nur ein Objekt zu beschränken. In der Hauptmethode führen wir die öffentliche Methode aus, um ein Singleton-Klassenobjekt zu erstellen.
Abstrakter Klassenkonstruktor in Java
Abstrakte Klasse in Java als C ++, außer dass wir im Gegensatz zu C ++ ein abstraktes Schlüsselwort in Java haben, das zum Deklarieren einer abstrakten Klasse verwendet wird. Abstrakte Klassen in Java können Konstruktoren haben. Dieser abstrakte Klassenkonstruktor wird aufgerufen, wenn wir eine Instanz einer Implementierungsklasse erstellen (die eine abstrakte Klasse erbt).
Betrachten Sie das folgende Beispiel eines abstrakten Klassenkonstruktors.
//abstract class declaration abstract class BaseClass { BaseClass() { System.out.println('BaseClass::Constructor Called'); } abstract void func1(); } class DerivedClass extends BaseClass { DerivedClass() { System.out.println('DerivedClass::Constructor Called'); } void func1() { System.out.println('DerivedClass::func1() called'); } } class Main { public static void main(String args()) { DerivedClass d = new DerivedClass(); } }
Ausgabe:
Da eine abstrakte Klasse nicht instanziiert werden kann, erben wir eine neue Klasse von dieser abstrakten Klasse. Die Ausgabe des Programms zeigt, dass beim Erstellen eines Objekts der abgeleiteten Klasse in der Hauptmethode zuerst der Konstruktor der abstrakten Klasse aufgerufen wird, gefolgt von einem Konstruktor der abgeleiteten Klasse.
Schnittstellenkonstruktor In Java
Schnittstellen in Java ähneln abstrakten Klassen. Schnittstellen sind standardmäßig öffentlich abstrakt und haben nur Methodenprototypen. Diese Prototypen werden dann in der Klasse implementiert, die die Schnittstelle implementiert.
Sind also Konstruktoren in Interfaces vorhanden?
Schnittstellen haben keine Konstruktoren. Dies liegt daran, dass die Methoden in einer Schnittstelle nur Prototypen sind und wir daher kein Objekt der Schnittstelle instanziieren oder erstellen müssen, da wir es überhaupt nicht verwenden werden. Daher muss auch kein Konstruktor in der Schnittstelle vorhanden sein.
Das folgende Java-Programm demonstriert diese Logik.
//interface declaration interface Interface_Add{ public int addNumbers(int num1, int num2); //method prototype } class AddClass implements Interface_Add{ public int addNumbers(int num1, int num2){ //method implementation int result= num1+num2; return result; } } class Main{ public static void main(String args()) { AddClass obj= new AddClass(); System.out.println('Result of addition:' + obj.addNumbers(2, 3)); } }
Ausgabe:
Hier haben wir eine Schnittstelle 'Interface_add' mit einem Methodenprototyp 'addNumbers'. Dann implementiert eine Klasse 'AddClass' diese Schnittstelle und auch die Methode addNumbers.
In der Hauptmethode wird die Klasse instanziiert und die Methode ausgeführt. Daher sehen wir in dieser Schnittstelle keine Notwendigkeit für einen Konstruktor.
Lassen Sie uns nun die Konstruktoren einiger bereits vorhandener Klassen in Java-ähnlichen Zeichenfolgen und Arrays diskutieren.
String-Konstruktor In Java
Ein String-Objekt in Java kann als Objekt der Klasse String definiert werden. Die String-Klasse bietet die folgenden Konstruktoren zum Erstellen und Initialisieren von String-Objekten.
Einige dieser Konstruktoren werden unten diskutiert:
# 1) String (Byte () myArray)
Konstruiert ein neues String-Objekt aus einem bestimmten Byte-Array. Zum Erstellen des Zeichenfolgenobjekts wird der Standardplattformzeichensatz verwendet und das Byte-Array dekodiert.
Beispiel:
byte() myArray = {65, 66, 67, 68, 69}; String str =new String(myArray); //ABCDE
# 2) String (Byte () myArray, Charset char_set)
Dieser Konstruktor erstellt ein neues Zeichenfolgenobjekt, indem er char_set verwendet, das im Konstruktoraufruf angegeben ist, um das Byte-Array zu dekodieren.
Beispiel:
byte() myArray = {65, 66, 67, 68, 69}; Charset cs = Charset.defaultCharset(); String str = new String(myArray, cs); //ABCDE
# 3) String (char () myArray)
Wir können ein String-Objekt aus einem Zeichenarray erstellen.
Beispiel:
char myArray() = {'P', 'a', 'r', 'i', 's'}; String s = new String(myArray); //Paris
# 4) String (char () myArray, int start_index, int count)
Hier konstruieren wir ein String-Objekt aus dem Zeichenarray, indem wir die Anzahl der Zeichen von start_index bis zur Anzahl einbeziehen.
Beispiel:
char myArray() = {'P', 'a', 'r', 'i', 's'}; String s = new String(myArray, 0,2); //Pa
# 5) String (int () intArray, int offset, int count)
Der obige Konstruktor weist ein neues String-Objekt aus einem int-Array zu. Die Anzahl der Zeichen in der Zeichenfolge wird durch Offset und Anzahl definiert.
Beispiel:
int() intArray = {65, 69,73,79,85 }; String s = new String (intArray, 0, 5); //AEIOU
# 6) String (StringBuffer strbuffer)
In diesem Konstruktor wird ein neues String-Objekt aus einem StringBuffer-Objekt erstellt.
Beispiel:
StringBuffer strbuffer = new StringBuffer('SoftwareTestingHelp'); String s = new String (strbuffer); //SoftwareTestingHelp
# 7) String (StringBuilder strbuilder)
Was sind die besten Virtual-Reality-Apps?
Mit dem StringBuilder-Objekt wird ein neues String-Objekt erstellt.
Beispiel:
StringBuilder strbuilder = new StringBuilder('SoftwareTestingHelp'); String s = new String(strbuilder); // SoftwareTestingHelp
Array-Konstruktoren in Java
Arrays verwenden Konstruktoren, um Arrays mit einem neuen Schlüsselwort zu erstellen und zu initialisieren, wie unten gezeigt.
int() data = new int(4);
Die obige Anweisung initialisiert ein Array von 4 Elementen auf den Standardwert 0.
Eine andere Möglichkeit zum Initialisieren des Arrays ist unten angegeben:
int() data = new int(){2, 4, 6, 8};
Destruktor In Java
Bisher haben wir Konstruktoren in Java gesehen, mit denen wir ein Objekt erstellen. Wenn das Objekt seinen Job beendet hat und nicht mehr benötigt wird, muss der dem Objekt zugewiesene Speicher freigegeben oder freigegeben werden. Dies ist die Aufgabe eines Destruktors in Java.
In Java ist der Garbage Collector dafür verantwortlich, die Objekte freizugeben, die nicht mehr verwendet werden oder nicht mehr erreichbar sind. Destruktoren in Java werden als Finalizer bezeichnet und sind nicht deterministisch, sodass wir nicht garantieren können, dass sie ausgeführt werden.
In Java brauchen wir uns keine Sorgen um Destruktoren zu machen. Destruktoren haben in Java keine bestimmte Syntax. Objekte werden zerstört, aber wir rufen den Destruktor nicht so auf, wie wir ihn in C ++ nennen.
Wie oben erwähnt, wird die Arbeit des Destruktors vom Finalizer erledigt, der vom Garbage Collector aufgerufen wird.
Die Finalizer-Methode in Java wird unten als Referenz gezeigt.
class Main { public static void main(String() args) { Main dm = new Main(); //create object dm = null; System.gc(); //call garbage collector System.out.println('Main Mathod'); } protected void finalize() //finalize method { System.out.println('Finalize method :: object is garbage collected'); } }
Ausgabe:
Im obigen Programm erstellen wir ein Klassenobjekt. Setzen Sie es auf null und dann rufen wir die System.gc () -Methode auf. Jetzt ist dieses Objekt nicht mehr erreichbar und die Finalize-Methode (Destruktor) wird implizit aufgerufen.
Konstruktor gegen Methode In Java
Lassen Sie uns einige der Unterschiede zwischen einem Konstruktor und einer Methode in Java tabellarisch darstellen.
Konstruktoren | Methode |
---|---|
Erstellt ein neues Objekt. | Arbeitet mit einem bereits vorhandenen Objekt. |
Ein Codeblock, mit dem die Klassenmitglieder beim Erstellen eines Objekts initialisiert werden. | Eine Sammlung von Programmieranweisungen, die bei Ausführung ein Ergebnis generieren. |
Wird verwendet, um die Initialisierung von Objekten durchzuführen. | Eine Folge von Anweisungen, die von Java ausgeführt werden. Kann eine Initialisierungsroutine enthalten oder nicht. |
Implizit aufgerufen. | Muss explizit in einem Programm aufgerufen werden. |
Wird aufgerufen, wenn ein neues Objekt mit dem neuen Schlüsselwort erstellt wird. | Wird aufgerufen, wenn die Methode vom Programmierer aufgerufen wird. |
Hat den gleichen Namen wie eine Klasse. | Es kann einen beliebigen Namen haben, der von der Programmiersprache zugelassen wird. |
Hat keinen Rückgabetyp. | Muss den Rückgabetyp haben, sonst sollte es ungültig sein. |
Eine Klasse kann viele überladene Konstruktoren haben. | Die Klasse kann sowohl überladene als auch unterschiedliche Methoden haben. |
Es kann nicht von der untergeordneten Klasse geerbt werden. | Es kann von der untergeordneten Klasse geerbt und sogar überschrieben werden. |
Häufig gestellte Fragen
F # 1) Können Konstruktoren privat sein?
Antworten: Ja. Konstruktoren in Java können privat sein. Alle Klassen, einschließlich abstrakter Klassen, können private Konstruktoren haben. Mit privaten Konstruktoren können wir verhindern, dass die Klasse instanziiert wird, oder wir können die Anzahl der Objekte dieser Klasse begrenzen.
F # 2) Was ist die Verwendung von Abstract Class Constructor in Java?
Antworten: Ein abstrakter Klassenkonstruktor wird aufgerufen, wenn wir ein Objekt der abgeleiteten Klasse erstellen, das die abstrakte Klasse erbt. Wenn die abstrakte Klasse einige Mitgliedsvariablen enthält, können wir sie im Konstruktor der abstrakten Klasse initialisieren.
F # 3) Können wir einen parametrisierten Konstruktor in einer Abstract-Klasse in Java definieren?
Antworten: Ja, wir können einen parametrisierten Konstruktor in einer abstrakten Klasse haben. Dann können wir diesen Konstruktor von der abgeleiteten Klasse aufrufen, die die abstrakte Klasse mit dem Aufruf super () geerbt hat.
F # 4) Wissen Sie, warum es in Java keinen Destruktor gibt?
Antworten: Java muss keinen bestimmten Destruktor haben, da es seinen Garbage Collector hat. Dieser Garbage Collector zerstört die nicht erreichbaren Objekte und gibt den Speicher frei. Eine Methode namens finalize ist auch Teil des Garbage Collector, der nicht deterministisch ausgeführt wird und die Funktion eines Destruktors wie das Freigeben der Ressourcen usw. ausführt.
F # 5) Kann Abstract Class einen Körper haben?
Antworten: Nein. Eine abstrakte Klasse kann nur Methodendeklarationen und Konstruktoren haben. Seine Methoden sind nicht implementiert. Die Klasse, die diese abstrakte Klasse erbt, implementiert die Methoden. Neben Prototypen oder Deklarationen kann es auch Sichtbarkeits- oder Zugriffsspezifizierer geben.
Fazit
Damit ist unser Tutorial zu Konstruktoren in Java abgeschlossen. Hier haben wir die Definition, Erstellung und Art der Konstruktoren behandelt. Wir haben auch die Überladung von Konstruktoren und die Verkettung von Konstruktoren in Java erörtert.
Wir haben abstrakte und private Konstruktoren in Java untersucht und erfahren, warum Schnittstellen keine Konstruktoren haben können. Wir haben Konstruktoren gesehen, die in Array- und String-Klassen verwendet werden.
Wir haben auch Destruktoren in Java besprochen, die die Funktion ausführen, die der von Konstruktoren entgegengesetzt ist. Konstruktoren erstellen Objekte, während Destruktoren Objekte zerstören. In Java wird die Destruktorfunktion vom Finalizer ausgeführt, der während der Speicherbereinigung ausgeführt wird.
Daher haben wir in Java keinen bestimmten Destruktor und müssen ihn nicht so definieren, wie wir es in C ++ tun. Wir haben auch die Unterschiede zwischen Methode und Konstruktor diskutiert. Wir wissen, dass der Konstruktor nicht mit einer Methode identisch ist, aber wir können den Konstruktor als spezielle Methode betrachten.
=> Lesen Sie die Easy Java Training Series durch.
Literatur-Empfehlungen
- Java-Konstruktor - Klassen-, Kopier- und Standardkonstruktoren
- C # -Konzepte: Konstruktor, Destruktor, statische Klasse, Struktur & Aufzählung
- Java String Array - Tutorial mit Codebeispielen
- Java String mit String Buffer und String Builder Tutorial
- Java String length () -Methode mit Beispielen
- Java String enthält () Method Tutorial mit Beispielen
- Java String indexOf Methode mit Codebeispielen
- Java String compareTo-Methode mit Programmierbeispielen