nesne bir yapının temel yapı taşıdır OOP'lar dil. İçinde Java oluşturmadan herhangi bir programı çalıştıramayız. nesne . Bunun çeşitli yolları var oluşturduğunuz bir Java'daki nesne Bu bölümde tartışacağımız ve aynı zamanda öğreneceğimiz Java'da bir nesne nasıl oluşturulur.
Java bir nesne oluşturmanın beş yolunu sunar.
- Kullanma yeni Anahtar kelime
- Kullanma klon() yöntem
- Kullanma yeniÖrnek() yöntemi Sınıf sınıf
- Kullanma yeniÖrnek() yöntemi Oluşturucu sınıf
- Kullanma Seri durumdan çıkarma
Yeni Anahtar Kelimeyi Kullanma
Kullanmak yeni anahtar kelime sınıfın bir nesnesini veya örneğini oluşturmanın en popüler yoludur. new anahtar sözcüğünü kullanarak sınıfın bir örneğini oluşturduğumuzda, yeni oluşturulan için bellek (yığın) ayırır. nesne ve ayrıca şunu döndürür: referans o nesnenin o hafızaya. New anahtar sözcüğü aynı zamanda dizi oluşturmak için de kullanılır. Bir nesne yaratmanın sözdizimi şöyledir:
ClassName object = new ClassName();
Bir nesne oluşturmak için new anahtar sözcüğünü kullanan bir program oluşturalım.
CreateObjectExample1.java
public class CreateObjectExample1 { void show() { System.out.println('Welcome to javaTpoint'); } public static void main(String[] args) { //creating an object using new keyword CreateObjectExample1 obj = new CreateObjectExample1(); //invoking method using the object obj.show(); } }
Çıktı:
Welcome to javaTpoint
New anahtar sözcüğünü kullanarak sınıfın yapıcısını da (varsayılan veya parametreli) çağırabiliriz.
CreateObjectExample2.java
tam form pvr
public class CreateObjectExample2 { //constructor of the class CreateObjectExample2() { System.out.println('Welcome to javaTpoint'); } public static void main(String[] args) { //creating an object using new keyword CreateObjectExample2 obj = new CreateObjectExample2(); } }
Çıktı:
Welcome to javaTpoint
clone() Yöntemini Kullanma
klon() yöntem yöntemdir Nesne sınıf. Bir nesnenin bir kopyasını oluşturur ve aynı kopyayı döndürür. JVM clone() yöntemi çağrıldığında yeni bir nesne oluşturur. Önceden oluşturulan nesnenin tüm içeriğini yeni bir nesneye kopyalar. Herhangi bir kurucuyu çağırmadığını unutmayın. Uygulamalıyız Klonlanabilir clone() yöntemini kullanırken arayüz. Yöntem atar KlonDesteklenmeyen İstisna nesnenin sınıfı Klonlanabilir arayüzü desteklemiyorsa istisna. clone() yöntemini geçersiz kılan alt sınıflar, bir örneğin klonlanamaması durumunda bir istisna oluşturabilir.
Not: Yöntem, yeni bir nesnenin değil, nesnenin bir kopyasını oluşturur.
Sözdizimi:
protected Object clone() throws CloneNotSupportedException
Yeni bir nesne oluşturmak için aşağıdaki ifadeyi kullanırız.
ClassName newobject = (ClassName) oldobject.clone();
CreateObjectExample3.java
rj12 vs rj11
public class CreateObjectExample3 implements Cloneable { @Override protected Object clone() throws CloneNotSupportedException { //invokes the clone() method of the super class return super.clone(); } String str = 'New Object Created'; public static void main(String[] args) { //creating an object of the class CreateObjectExample3 obj1 = new CreateObjectExample3(); //try catch block to catch the exception thrown by the method try { //creating a new object of the obj1 suing the clone() method CreateObjectExample3 obj2 = (CreateObjectExample3) obj1.clone(); System.out.println(obj2.str); } catch (CloneNotSupportedException e) { e.printStackTrace(); } } }
Çıktı:
New Object Created
Class sınıfının newInstance() Yöntemini kullanma
yeniÖrnek() Bir nesne oluşturmak için Class sınıfının yöntemi de kullanılır. Nesneyi oluşturmak için varsayılan kurucuyu çağırır. Nesne tarafından temsil edilen sınıfın yeni oluşturulmuş bir örneğini döndürür. Dahili olarak Constructor sınıfının newInstance() yöntemini kullanır.
Sözdizimi:
public T newInstance() throws InstantiationException, IllegalAccessException
Fırlatıyor Yasadışı Erişim İstisnası, InstantiationException, ExceptionInInitializerError istisnalar.
Bir nesneyi aşağıdaki şekillerde oluşturabiliriz:
ClassName object = ClassName.class.newInstance();
Veya
ClassName object = (ClassName) Class.forName('fully qualified name of the class').newInstance();
Yukarıdaki açıklamada, forName() Class sınıfının statik bir yöntemidir. Bir parametreyi ayrıştırır sınıf adı String türünde. Sınıfın nesnesini tam adı ile döndürür. Sınıfı yükler ancak herhangi bir nesne oluşturmaz. Fırlatıyor ClassNotFoundException sınıf yüklenemiyorsa ve Bağlantı Hatası bağlantı başarısız olursa.
Nesneyi oluşturmak için şunu kullanırız: yeniÖrnek() Class sınıfının yöntemi. Yalnızca sınıfın adını bildiğimizde ve sınıfın genel bir varsayılan kurucuya sahip olduğu durumlarda çalışır.
Java dizisi sıralandı
Aşağıdaki programda newInstance() yöntemini kullanarak yeni bir nesne oluşturduk.
CreateObjectExample4.java
public class CreateObjectExample4 { void show() { System.out.println('A new object created.'); } public static void main(String[] args) { try { //creating an instance of Class class Class cls = Class.forName('CreateObjectExample4'); //creates an instance of the class using the newInstance() method CreateObjectExample4 obj = (CreateObjectExample4) cls.newInstance(); //invoking the show() method obj.show(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } }
Çıktı:
A new object created.
Yapıcı sınıfının newInstance() Yöntemini kullanma
Şuna benzer yeniÖrnek() yöntemi Sınıf sınıf. Nesneleri yaratmanın yansıtıcı bir yolu olarak bilinir. Yöntem şu şekilde tanımlanmıştır: Oluşturucu sınıf hangisidirjava.lang.reflektpaket. Parametreli kurucuyu ve özel kurucuyu aşağıdakileri kullanarak da çağırabiliriz: yeniÖrnek() yöntem. Class sınıfının newInstance() yöntemine kıyasla yaygın olarak tercih edilir.
Sözdizimi:
public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
Yöntem, bir Nesneler dizisini bağımsız değişken olarak ayrıştırır. Uygun türde bir sarmalayıcı Nesneye sarılı ilkel türlerin değerleri. Yapıcıyı çağırarak oluşturulan yeni bir nesneyi döndürür. Fırlatıyor IllegalAccessException, IllegalArgumentException, InstantiationException, InvokasyonTargetException, ExceptionInInitializerError İstisnaları .
Bir nesneyi şu şekilde oluşturabiliriz:
c# anahtarı
Constructor constructor = Employee.class.getConstructor(); Employee emp3 = constructor.newInstance();
NewInstance() yöntemini kullanarak nesne oluşturan bir program oluşturalım.
CreateObjectExample5.java
import java.lang.reflect.*; public class CreateObjectExample5 { private String str; CreateObjectExample5() { } public void setName(String str) { this.str = str; } public static void main(String[] args) { try { Constructor constructor = CreateObjectExample5.class.getDeclaredConstructor(); CreateObjectExample5 r = constructor.newInstance(); r.setName('JavaTpoint'); System.out.println(r.str); } catch (Exception e) { e.printStackTrace(); } } }
Çıktı:
JavaTpoint
Seri durumdan çıkarmanın kullanılması
Java'da, serileştirme bir nesneyi bir bayt akışı dizisine dönüştürme işlemidir. Serileştirmenin ters işlemine (nesneye bayt akışı) denir. seri durumdan çıkarma . JVM, bir nesneyi serileştirdiğimizde veya seri durumdan çıkardığımızda yeni bir nesne oluşturur. Bir nesne oluşturmak için yapıcıyı kullanmaz. Seri durumdan çıkarma kullanılırken, Serileştirilebilir arayüz (işaretçi arayüz) sınıfta uygulanmalıdır.
Serileştirme: writeObject() yöntemi NesneÇıktıAkışı Sınıf bir nesneyi serileştirmek için kullanılır. Nesneyi çıkış akışına gönderir.
Sözdizimi:
public final void writeObject(object x) throws IOException
Seri durumdan çıkarma: Yöntem okumaObject() ile ilgili Nesne Giriş Akışı Sınıf, bir nesnenin seri durumdan çıkarılması için kullanılır. Bir akışın dışındaki nesnelere referans verir.
Sözdizimi:
public final Object readObject() throws IOException,ClassNotFoundException
Not: Nesnenin bir parçası olarak bir alan eklemek istemiyorsak, dosyalananı statik veya geçici yapın. Serileştirme sürecine dahil edilmeyecektir.
Bir program aracılığıyla serileştirme ve seri durumdan çıkarma işlemlerini anlayalım.
Çalışan.java
import java.io.Serializable; public class Employee implements Serializable { int empid; String empname; public Empoyee(int empid, String empname) { this.empid = empid; this.empname = empname; } }
adında bir sınıf oluşturduk. Çalışan nesnesi serileştirilecek ve seri durumdan çıkarılacak olan.
Java Nesnesinin Serileştirilmesi:
Aşağıdaki programda, Employee sınıfının bir nesnesini kullanarak seri hale getirdik. writeObject() ObjectOutputStream sınıfının yöntemi. Nesnenin durumu şuraya kaydedilir: çalışan.txt dosya.
SerileştirmeÖrneği.java
import java.io.*; class SerializationExample { public static void main(String args[]) { Try { //Creating the object Employee emp = new Employee(198054,'Andrew'); //Creates a stream and writes the object FileOutputStream fout=new FileOutputStream('employee.txt'); ObjectOutputStream out=new ObjectOutputStream(employeeout); out.writeObject(emp); out.flush(); //closes the output stream out.close(); System.out.println('Successfully Created'); } catch(Exception e) { System.out.println(e); } } }
Çıktı:
Successfully Created
Java Nesnesinin seri durumdan çıkarılması:
Yukarıdaki programda serileştirdiğimiz bir nesneyi aşağıdaki programda seri durumdan çıkaracağız.
Seri durumdan çıkarmaExample.java
import java.io.*; class DeserializationExample { public static void main(String args[]) { try { //Creating a stream to read the object ObjectInputStream in=new ObjectInputStream(new FileInputStream('employee.txt')); Employee e=(Employee)in.readObject(); //prints the data of the serialized object System.out.println(e.empid+' '+e.empname); //closing the input stream in.close(); } catch(Exception e) { System.out.println(e); } } }
Çıktı:
c'deki işaretçi
198054 Andrew
Yukarıdaki beş yöntemde şunu fark ettik: yeni anahtar kelime ve her ikisi yeniÖrnek() yöntemler nesneleri oluşturmak için yapıcıyı kullanırken geri kalan iki yöntem yapıcıyı kullanmaz.