logo

Java'da Nesne Nasıl Oluşturulur

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.

Java'da Nesne Nasıl Oluşturulur

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.