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.