Co to jest konstruktor kopii w Javie

Co to jest konstruktor kopii w Javie
W Javie mogą wystąpić przypadki, w których deweloper musi realokować wartości zgodnie z wymaganiami. Na przykład aktualizacja wpisów konstruktora od czasu do czasu utrzymuje nienaruszony kod. W takich przypadkach „Kopiuj konstruktor”W Javie staje się pomocna w modyfikowaniu funkcji kodu zgodnie z danymi wymaganiami.

W tym artykule omówiono wykorzystanie „konstruktora kopii” za pomocą Java.

Czym jest „konstruktor kopii” w Javie?

„„Kopiuj konstruktor”Odpowiada konstruktorowi, który tworzy/tworzy obiekt, inicjując go z identycznym obiektem klasy, utworzonym wcześniej. Aby utworzyć konstruktor kopii, istniejący obiekt klasy jest umieszczony jako argument, a wartości zmiennych instancji są inicjowane z wartościami zgromadzonymi w obiekcie.

Przykład 1: Zastosowanie „Konstruktora kopii” do kopiowania „przydzielonych” wartości obiektów w Javie

Ten przykład wykorzystuje „Kopiuj konstruktor„Aby skopiować przydzielone wartości obiektu z innego utworzonego obiektu, owijając przydzielony obiekt jako jego argument:

classProfile
Nazwa ciągu;
int wiek;
Profil (nazwa ciągu, int wiek)
Ten.Nazwa = nazwa;
Ten.wiek = wiek;

Profil (profil ob)
System.na zewnątrz.println („wywołał konstruktor kopii!");
Ten.Nazwa = ob.nazwa;
Ten.wiek = ob.wiek;

W powyższym kodzie klasy zastosuj następujące kroki:

  • Przede wszystkim zdefiniuj klasę o nazwie „Profil".
  • W swojej definicji określ dostane zmienne.
  • Następnie uwzględnij konstruktor klas obejmujący określone parametry identyczne z określonymi.
  • W definicji konstruktora patrz określone zmienne przez „Ten”I przypisuj im przekazane argumenty.
  • Teraz utwórz konstruktor kopii o podanym parametrze.
  • Notatka: "OB”W konstruktorze kopii wskazuje na obiekt klasowy utworzony.
  • W swojej definicji znajdują się również w określonych zmiennych i przypisz je już przydzielone wartości za pomocą podanego obiektu.

Teraz przejdźmy do następujących wierszy kodu:

Copiconstructor klasy publicznej
public static void main (string args [])
Obiekt profilu1 = nowy profil („Harry”, 18);
Profilu Object2 = nowy profil (Object1);
System.na zewnątrz.println ("\ nbefore modyfikujący wartości:");
System.na zewnątrz.println (obiekt1.Nazwa + „” + obiekt1.wiek);
System.na zewnątrz.println (Object2.Nazwa + „” + obiekt2.wiek);
obiekt2.Wiek = 24;
System.na zewnątrz.println („\ nafter Wartości modyfikujące:”);
System.na zewnątrz.println (obiekt1.Nazwa + „” + obiekt1.wiek);
System.na zewnątrz.println (Object2.Nazwa + „” + obiekt2.wiek);

Zgodnie z tym kodem:

  • Utwórz obiekty klasowe za pomocą „nowy”Słowo kluczowe i„Profil()”Konstruktor odpowiednio.
  • Poprzedni obiekt odpowiada konstruktorowi pierwszej klasy obejmującego określone wartości.
  • Ten ostatni obiekt utworzony odnosi się do konstruktora kopii.
  • Teraz wyświetl wartości obiektu jeden po drugim.
  • W tym momencie oba wartości obiektu wyświetlają identyczne wartości, ponieważ poprzedni obiekt jest owinięty jako drugi (skopiowany) argument konstruktora.
  • W następnym kroku przeznacz nową wartość do tego drugiego obiektu.
  • Wreszcie wyświetl zaktualizowane wartości obiektów po przydzieleniu.

Cały kod

Profil klasowy
Nazwa ciągu;
int wiek;
Profil (nazwa ciągu, int wiek)
Ten.Nazwa = nazwa;
Ten.wiek = wiek;

Profil (profil ob)
System.na zewnątrz.println („wywołał konstruktor kopii!");
Ten.Nazwa = ob.nazwa;
Ten.wiek = ob.wiek;
Copiconstructor klasy publicznej
public static void main (string args [])
Obiekt profilu1 = nowy profil („Harry”, 18);
Profilu Object2 = nowy profil (Object1);
System.na zewnątrz.println ("\ nbefore modyfikujący wartości:");
System.na zewnątrz.println (obiekt1.Nazwa + „” + obiekt1.wiek);
System.na zewnątrz.println (Object2.Nazwa + „” + obiekt2.wiek);
obiekt2.Wiek = 24;
System.na zewnątrz.println („\ nafter Wartości modyfikujące:”);
System.na zewnątrz.println (obiekt1.Nazwa + „” + obiekt1.wiek);
System.na zewnątrz.println (Object2.Nazwa + „” + obiekt2.wiek);

Wyjście

W tym wyjściu można przeanalizować, że przydzielone wartości obiektów są odpowiednio zapakowane w konstruktor kopii.

Przed przejściem do następnego przykładu upewnij się, że dołącz następujący pakiet, aby włączyć dane wejściowe użytkownika:

Importuj Java.Util.Skaner;

Przykład 2: Zastosowanie „Konstruktora kopii” do skopiowania wartości obiektu „wprowadzania użytkownika” w Javie

W tym przykładzie „Kopiuj konstruktor”Można zastosować do kopiowania wartości obiektów wejściowych użytkownika, gromadząc już obiekt klasowy już utworzony jako argument konstruktora tego ostatniego obiektu:

classProfiledata
Nazwa ciągu; int wiek;
Profiledata (Nazwa ciągu, int wiek)
Ten.Nazwa = nazwa;
Ten.wiek = wiek;
Profiledata (profiledata ob)
System.na zewnątrz.println („wywołał konstruktor kopii!");
Ten.Nazwa = ob.nazwa; Ten.wiek = ob.wiek;
voidshow ()
System.na zewnątrz.println („nazwa to:”+to.nazwa);
System.na zewnątrz.println („wiek to:”+to.wiek);
publicClassCopyConstructor2
publicStaticVoidMain (String args [])
Scanner Object = nowy skaner (system.W);
System.na zewnątrz.println („Wprowadź nazwę:”);
Nazwa ciągu = obiekt.NextLine ();
System.na zewnątrz.println („Wprowadź wiek:”);
int wiek = obiekt.NextIt ();
Profiledata Object1 = new ProfileData (nazwa, wiek);
obiekt1.pokazywać();
Profiledata Object2 = new ProfileData (Object1);
obiekt2.pokazywać(); obiekt.zamknąć();

Zastosuj następujące kroki, zgodnie z powyższymi wierszami kodu:

  • Przypomnij o omówionym podejściu do zdefiniowania klasy i w tym odpowiednio konstruktora i konstruktora kopii.
  • Następnie zdefiniuj funkcję o nazwie „pokazywać()„Aby wyświetlić wartości obiektowe.
  • W "główny()„Metoda, stwórz„Skaner„Obiekt za pomocą„nowy”Słowo kluczowe i„Skaner ()”Konstruktor odpowiednio.
  • „„System.W„Parametr odczytuje wejście użytkownika”, „Nextline ()”I„ „NextIt ()„Metody zapewniają wprowadzanie użytkownika jako„Strunowy", I "Liczba całkowita”Odpowiednio.
  • Teraz utwórz obiekt klasy o nazwie „obiekt1”Za pośrednictwem omówionego podejścia i przekazywania wartości wprowadzania użytkownika jako jego argumentów. Wyświetl te wartości za pomocą funkcji wywołanej klasy „pokazywać()".
  • W następnym kroku utwórz inny obiekt klasowy i przekazaj poprzedni obiekt jako argument konstruktora kopii, tak aby wartości wprowadzania użytkownika zostały wcześniej gromadzone w tym obiekcie.
  • Na koniec wyświetl wartości za pomocą funkcji dostępnej „pokazywać()”I zamknij„Skaner”Z pomocą powiązanych„zamknąć()" metoda.

Wyjście

Powyższy wynik oznacza, że ​​konstruktor kopii jest wywoływany i wartości obiektów są odpowiednio gromadzone.

Wniosek

„„Kopiuj konstruktor”W Javie odpowiada konstruktorowi, który tworzy/tworzy obiekt, inicjując go za pomocą tego samego/identycznego obiektu klasy, utworzonego wcześniej. Ten konstruktor działa tak, że już utworzony obiekt jest owinięty jako jego argument. Ten blog prowadził i wdrażając „Kopiuj konstruktor„W Javie.