In Java sind Klassen und Objekte grundlegende Konzepte der objektorientierten Programmierung (OOPs), die zur Darstellung realer Konzepte und Entitäten verwendet werden. Die Klasse repräsentiert eine Gruppe von Objekten mit ähnlichen Eigenschaften und Verhalten. Zum Beispiel die Tierart Hund ist eine Klasse, während ein bestimmter Hund benannt wird Tommy ist ein Objekt der Hund Klasse.
In diesem Artikel besprechen wir Java-Objekte und -Klassen und wie man sie in unserem Programm implementiert.
Java-Klassen
Eine Klasse in Java ist eine Menge von Objekten, die gemeinsame Merkmale/Verhalten und gemeinsame Eigenschaften/Attribute aufweisen. Es handelt sich um einen benutzerdefinierten Entwurf oder Prototyp, aus dem Objekte erstellt werden. Beispielsweise ist Student eine Klasse, während ein bestimmter Student namens Ravi ein Objekt ist.
Eigenschaften von Java-Klassen
- Die Klasse ist keine reale Entität. Es handelt sich lediglich um eine Vorlage, einen Bauplan oder einen Prototyp, aus dem Objekte erstellt werden.
- Die Klasse belegt keinen Speicher.
- Eine Klasse ist eine Gruppe von Variablen unterschiedlicher Datentypen und eine Gruppe von Methoden.
- Eine Klasse in Java kann Folgendes enthalten:
- Datenmitglied
- Methode
- Konstrukteur
- Verschachtelte Klasse
- Schnittstelle
Klassendeklaration in Java
access_modifier class < class_name>{ Datenmitglied; Methode; Konstrukteur; verschachtelte Klasse; Schnittstelle; }> Beispiel einer Java-Klasse
Java
// Java Program for class example> class> Student {> >// data member (also instance variable)> >int> id;> >// data member (also instance variable)> >String name;> >public> static> void> main(String args[])> >{> >// creating an object of> >// Student> >Student s1 =>new> Student();> >System.out.println(s1.id);> >System.out.println(s1.name);> >}> }> |
>
>
Java
// Java program to Illustrate Creation of Object> // Using new Instance> // Main class> class> GFG {> >// Declaring and initializing string> >String name =>'GeeksForGeeks'>;> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Try block to check for exceptions> >try> {> >Class cls = Class.forName(>'GFG'>);> >// Creating object of main class> >// using instance method> >GFG obj = (GFG)cls.newInstance();> >// Print and display> >System.out.println(obj.name);> >}> >catch> (ClassNotFoundException e) {> >e.printStackTrace();> >}> >catch> (InstantiationException e) {> >e.printStackTrace();> >}> >catch> (IllegalAccessException e) {> >e.printStackTrace();> >}> >}> }> |
>
>
Wann beginnt Q2?
Java
// Java program to Illustrate Creation of Object> // Using clone() method> // Main class> // Implementing Cloneable interface> class> GFG>implements> Cloneable {> >// Method 1> >@Override> >protected> Object clone()> >throws> CloneNotSupportedException> >{> >// Super() keyword refers to parent class> >return> super>.clone();> >}> >String name =>'GeeksForGeeks'>;> >// Method 2> >// main driver method> >public> static> void> main(String[] args)> >{> >GFG obj1 =>new> GFG();> >// Try block to check for exceptions> >try> {> >GFG obj2 = (GFG)obj1.clone();> >System.out.println(obj2.name);> >}> >catch> (CloneNotSupportedException e) {> >e.printStackTrace();> >}> >}> }> |
>
>
Ausgang 1
0 null>
Ausgang 2
GeeksForGeeks>
Ausgabe 3
GeeksForGeeks>
Komponenten von Java-Klassen
Im Allgemeinen können Klassendeklarationen diese Komponenten in der folgenden Reihenfolge enthalten:
- Modifikatoren : Eine Klasse kann öffentlich sein oder über Standardzugriff verfügen (siehe Das für Details).
- Schlüsselwort der Klasse: Das Schlüsselwort class wird zum Erstellen einer Klasse verwendet.
- Klassenname: Der Name sollte mit einem Anfangsbuchstaben beginnen (konventionell großgeschrieben).
- Oberklasse (falls vorhanden): Der Name der übergeordneten Klasse (Superklasse), sofern vorhanden, mit vorangestelltem Schlüsselwort „extends“. Eine Klasse kann nur ein Elternteil erweitern (Unterklasse).
- Schnittstellen (falls vorhanden): Eine durch Kommas getrennte Liste der von der Klasse implementierten Schnittstellen (falls vorhanden), dem das Schlüsselwort „implements“ vorangestellt ist. Eine Klasse kann mehr als eine Schnittstelle implementieren.
- Körper: Der Klassenkörper ist von geschweiften Klammern {} umgeben.
Konstruktoren werden zum Initialisieren neuer Objekte verwendet. Felder sind Variablen, die den Zustand der Klasse und ihrer Objekte angeben, und Methoden werden verwendet, um das Verhalten der Klasse und ihrer Objekte zu implementieren.
Es gibt verschiedene Arten von Klassen, die in Echtzeitanwendungen verwendet werden, z verschachtelte Klassen , anonyme Klassen , Und Lambda-Ausdrücke .
Java-Objekte
Ein Objekt ist in Java eine Grundeinheit der objektorientierten Programmierung und repräsentiert reale Entitäten. Objekte sind die Instanzen einer Klasse, die erstellt werden, um die Attribute und Methoden einer Klasse zu verwenden. Ein typisches Java-Programm erstellt viele Objekte, die, wie Sie wissen, durch den Aufruf von Methoden interagieren. Ein Objekt besteht aus:
- Zustand : Es wird durch Attribute eines Objekts dargestellt. Es spiegelt auch die Eigenschaften eines Objekts wider.
- Verhalten : Es wird durch die Methoden eines Objekts dargestellt. Es spiegelt auch die Reaktion eines Objekts mit anderen Objekten wider.
- Identität : Es gibt einem Objekt einen eindeutigen Namen und ermöglicht einem Objekt die Interaktion mit anderen Objekten.
Beispiel für ein Objekt: Hund
Java-Objekte
Objekte entsprechen Dingen, die in der realen Welt vorkommen. Ein Grafikprogramm kann beispielsweise Objekte wie Kreis, Quadrat und Menü enthalten. Ein Online-Einkaufssystem kann über Objekte wie „Warenkorb“, „Kunde“ und „Produkt“ verfügen.
Notiz: Wenn wir ein Objekt erstellen, das einen nicht primitiven Datentyp hat, wird es immer im Heap-Speicher zugewiesen.
Objekte deklarieren (auch Instanziieren einer Klasse genannt)
Wenn ein Objekt einer Klasse erstellt wird, spricht man von der Klasse instanziiert . Alle Instanzen teilen die Attribute und das Verhalten der Klasse. Aber die Werte dieser Attribute, d. h. der Zustand, sind für jedes Objekt einzigartig. Eine einzelne Klasse kann beliebig viele Instanzen haben.
Beispiel:
Java-Objektdeklaration
String-Split-Bash
Da wir Variablen wie (Typname;) deklarieren. Dies teilt dem Compiler mit, dass wir den Namen verwenden werden, um auf Daten zu verweisen, deren Typ Typ ist. Bei einer primitiven Variablen reserviert diese Deklaration auch die richtige Menge an Speicher für die Variable. Bei Referenzvariablen muss der Typ also unbedingt ein konkreter Klassenname sein. Im Allgemeinen wir kippen Objekte einer abstrakten Klasse oder einer Schnittstelle erstellen.
Dog tuffy;>
Wenn wir eine Referenzvariable (tuffy) wie folgt deklarieren, bleibt ihr Wert unbestimmt (null), bis tatsächlich ein Objekt erstellt und ihm zugewiesen wird. Durch die einfache Deklaration einer Referenzvariablen wird kein Objekt erstellt.
Initialisieren eines Java-Objekts
Der neue Operator instanziiert eine Klasse, indem er Speicher für ein neues Objekt zuweist und einen Verweis auf diesen Speicher zurückgibt. Der neue Operator ruft auch den Klassenkonstruktor auf.
Beispiel:
Java
// Class Declaration> public> class> Dog {> >// Instance Variables> >String name;> >String breed;> >int> age;> >String color;> >// Constructor Declaration of Class> >public> Dog(String name, String breed,>int> age,> >String color)> >{> >this>.name = name;> >this>.breed = breed;> >this>.age = age;> >this>.color = color;> >}> >// method 1> >public> String getName() {>return> name; }> >// method 2> >public> String getBreed() {>return> breed; }> >// method 3> >public> int> getAge() {>return> age; }> >// method 4> >public> String getColor() {>return> color; }> >@Override> public> String toString()> >{> >return> (>'Hi my name is '> +>this>.getName()> >+>'.
My breed,age and color are '> >+>this>.getBreed() +>','> +>this>.getAge()> >+>','> +>this>.getColor());> >}> >public> static> void> main(String[] args)> >{> >Dog tuffy> >=>new> Dog(>'tuffy'>,>'papillon'>,>5>,>'white'>);> >System.out.println(tuffy.toString());> >}> }> |
>
>Ausgabe
Hi my name is tuffy. My breed,age and color are papillon,5,white>
Initialisieren Sie mit der Methode/Funktion:
Java
public> class> GFG {> >// sw=software> >static> String sw_name;> >static> float> sw_price;> >static> void> set(String n,>float> p)> >{> >sw_name = n;> >sw_price = p;> >}> >static> void> get()> >{> >System.out.println(>'Software name is: '> + sw_name);> >System.out.println(>'Software price is: '> >+ sw_price);> >}> >public> static> void> main(String args[])> >{> >GFG.set(>'Visual studio'>,>0>.0f);> >GFG.get();> >}> }> |
>
>Ausgabe
Software name is: Visual studio Software price is: 0.0>
Diese Klasse enthält einen einzelnen Konstruktor. Wir können einen Konstruktor daran erkennen, dass seine Deklaration denselben Namen wie die Klasse verwendet und er keinen Rückgabetyp hat. Der Java-Compiler unterscheidet die Konstruktoren anhand der Anzahl und des Typs der Argumente. Der Konstruktor in der Hund Die Klasse benötigt vier Argumente. Die folgende Anweisung stellt tuffy, papillon,5 und white als Werte für diese Argumente bereit:
Dog tuffy = new Dog('tuffy','papillon',5, 'white');> Das Ergebnis der Ausführung dieser Anweisung kann wie folgt dargestellt werden:
Speicherzuweisung von Java-Objekten
Notiz: Alle Klassen haben mindestens eins Konstrukteur. Wenn eine Klasse keine explizit deklariert, stellt der Java-Compiler automatisch einen Konstruktor ohne Argumente bereit, der auch als Standardkonstruktor bezeichnet wird. Dieser Standardkonstruktor ruft den Konstruktor ohne Argumente der übergeordneten Klasse auf (da er nur eine Anweisung enthält, d. h. super();) oder den Objekt Klassenkonstruktor, wenn die Klasse kein anderes übergeordnetes Element hat (da die Object-Klasse direkt oder indirekt das übergeordnete Element aller Klassen ist).
Möglichkeiten zum Erstellen eines Objekts einer Klasse
Es gibt vier Möglichkeiten, Objekte in Java zu erstellen. Streng genommen gibt es nur einen Weg (durch die Verwendung von a neu Schlüsselwort), und der Rest verwendet intern a neu Stichwort.
1. Neues Schlüsselwort verwenden
Dies ist die gebräuchlichste und allgemeinste Methode zum Erstellen eines Objekts in Java.
Beispiel:
// creating object of class Test Test t = new Test();>
2. Verwenden der Methode Class.forName(String className).
Im java.lang-Paket gibt es eine vordefinierte Klasse mit dem Namen Class. Die Methode forName(String className) gibt das Klassenobjekt zurück, das der Klasse mit dem angegebenen Zeichenfolgennamen zugeordnet ist. Wir müssen einer Klasse einen vollständig qualifizierten Namen geben. Beim Aufruf der neuen Instanz()-Methode für dieses Klassenobjekt wird eine neue Instanz der Klasse mit dem angegebenen Zeichenfolgennamen zurückgegeben.
// creating object of public class Test // consider class Test present in com.p1 package Test obj = (Test)Class.forName('com.p1.Test').newInstance();> 3. Verwendung der clone()-Methode
Die clone()-Methode ist in der Object-Klasse vorhanden. Es erstellt eine Kopie des Objekts und gibt sie zurück.
// creating object of class Test Test t1 = new Test(); // creating clone of above object Test t2 = (Test)t1.clone();>
4. Deserialisierung
Deserialisierung ist eine Technik zum Lesen eines Objekts aus dem gespeicherten Zustand in einer Datei. Beziehen auf Serialisierung/De-Serialisierung in Java
FileInputStream file = new FileInputStream(filename); ObjectInputStream in = new ObjectInputStream(file); Object obj = in.readObject();>
Mehrere Objekte nur eines Typs erstellen (Eine bewährte Vorgehensweise)
In Echtzeit benötigen wir unterschiedliche Objekte einer Klasse in unterschiedlichen Methoden. Das Erstellen einer Reihe von Referenzen zum Speichern dieser Referenzen ist keine gute Praxis. Deshalb deklarieren wir eine statische Referenzvariable und verwenden sie bei Bedarf. In diesem Fall ist die Speicherverschwendung geringer. Die Objekte, auf die nicht mehr verwiesen wird, werden durch zerstört Müllsammler von Java.
Beispiel:
wie man eine JSON-Datei liest
Test test = new Test(); test = new Test();>
Im Vererbungssystem verwenden wir eine Referenzvariable der übergeordneten Klasse, um ein Unterklassenobjekt zu speichern. In diesem Fall können wir mit derselben referenzierten Variablen in verschiedene Unterklassenobjekte wechseln.
Beispiel:
class Animal {} class Dog extends Animal {} class Cat extends Animal {} public class Test { // using Dog object Animal obj = new Dog(); // using Cat object obj = new Cat(); }> Anonyme Objekte in Java
Anonyme Objekte sind Objekte, die instanziiert, aber nicht in einer Referenzvariablen gespeichert werden.
- Sie werden für unmittelbare Methodenaufrufe verwendet.
- Sie werden nach dem Methodenaufruf zerstört.
- Sie werden häufig in verschiedenen Bibliotheken verwendet. In AWT-Bibliotheken werden sie beispielsweise verwendet, um eine Aktion bei der Erfassung eines Ereignisses (z. B. eines Tastendrucks) auszuführen.
- Im folgenden Beispiel erstellen wir beim Drücken einer Tastentaste (auf die durch den BTN verwiesen wird) einfach ein anonymes Objekt der EventHandler-Klasse, um nur die Handle-Methode aufzurufen.
btn.setOnAction(new EventHandler() { public void handle(ActionEvent event) { System.out.println('Hello World!'); } });> Unterschied zwischen Java-Klasse und Objekten
Die Unterschiede zwischen Klasse und Objekt in Java sind wie folgt:
| Klasse | Objekt |
|---|---|
| Klasse ist der Bauplan eines Objekts. Es wird zum Erstellen von Objekten verwendet. | Ein Objekt ist eine Instanz der Klasse. |
| Bei der Deklaration einer Klasse wird kein Speicher zugewiesen. | Speicher wird zugewiesen, sobald ein Objekt erstellt wird. |
| Eine Klasse ist eine Gruppe ähnlicher Objekte. | Ein Objekt ist eine reale Entität wie ein Buch, ein Auto usw. |
| Klasse ist eine logische Einheit. | Ein Objekt ist eine physische Einheit. |
| Eine Klasse kann nur einmal deklariert werden. | Objekte können je nach Bedarf mehrmals erstellt werden. |
| Ein Beispiel für eine Klasse kann ein Auto sein. | Objekte der Klasse Auto können BMW, Mercedes, Ferrari usw. sein. |