Przykład 1:
Przed przystąpieniem do demonstracji konstruktora kopiowania mamy działanie domyślnego konstruktora w Javie. Domyślne konstruktory to konstruktory, które nie przyjmują parametrów. Miejmy domyślny program konstruktora w następujący sposób:
Klasa publiczna DefaultConstDefiniujemy program, który zaczyna się od budowy klasy Java „DefaultConst”. Klasa „DefaultConst” jest dalej zdefiniowana z konstruktorem, który jest zatytułowany taki sam, jak nazwa klasy Java. Tutaj tworzymy ten konstruktor, który jest pusty, ale zawiera instrukcję drukowania wewnątrz bloku konstruktora. Następnie wdrażamy metodę klasy main (), w której wywoływana jest ta klasa. W tym celu deklarujemy obiekt „d” i stosujemy tam defaultConst (). Stamtąd wykonywane jest DefaultConst ().
Domyślny konstruktor nie podał parametru, ale instrukcja drukowania jest wykonywana przez utworzenie jego obiektu w metodzie Main ().
Przykład 2:
Demonstracja konstruktora odbywa się w poprzednim przykładzie. Teraz istnieje przykładowy konstruktor kopii. Konstruktorzy kopii Java przyjmują bieżący obiekt jako wejście i tworzą kopię zdefiniowanego obiektu.
klasa ComplexNumberMamy poprzedni program, w którym tworzymy klasę „ComplexNumber” Java. Klasa „ComplexNumber” zawiera atrybuty deklarowane jako „prawdziwe” i „IMG”. Następnie definiujemy konstruktor w klasie „ComplexNumber”, w której atrybuty klasowe są przekazywane jako argumenty. Następnie używamy słowa kluczowego „to” w odniesieniu do bieżących obiektów, „prawdziwych” i „img”. Następnie stosujemy konstruktor kopii „ComplexNumber ()”, który ma parametryczny obiekt „CN” klasy „ComplexNumber”. Konstruktor jest zadeklarowany za pomocą obiektów klasy. Wartości zmiennych instancji są inicjowane z wartościami z otrzymanego obiektu.
Następnie wykonujemy operację zastępowania toString () na obiektach klasowych „prawdziwych” i „img”. Klasa główna „ComplexNumber” jest zaimplementowana metodą Main (). Tutaj tworzymy obiekt „CN1”, aby wywołać klasę ComplexNumber (). Ustawiamy wartości dla zmiennych „prawdziwych” i „img” w klasie ComplexNumber (). Następnie deklarujemy obiekt „CN2”, w którym konstruktor kopii jest zaangażowany, ponieważ „CN2” jest przekazywany w nim. Następnie deklarujemy inny obiekt „CN3”, aby odwołać się do obiektu „CN2”. Ostatecznie nazywamy metodą TOString () obiektu „CN2”, aby wydrukować wartości.
Złożona liczba wartości rzeczywistych i wyobrażonych zarówno dla istniejącego obiektu, jak i skopiowanego obiektu jest taka sama. Konstruktor kopii nie wpływa na pierwotną datę obiektów.
Przykład 3:
Konstruktor kopii służy tylko do utworzenia zduplikowanej kopii istniejących zmiennych klasy klasy. Teraz konstruktor kopii jest tworzony dla klas typów odwołanych. Za pośrednictwem konstruktora kopii możemy dodać atrybuty jednej klasy do innej klasy.
Pracownik klasyProgram jest ustanowiony w klasie „pracownika” Java i ustawiamy prywatne atrybuty klasy. Atrybuty te obejmują Ename String, Esalary podwójny i adres. Następnie konstruujemy sparametryzowany konstruktor klasy „pracownika”, który przyjmuje istniejące atrybuty klasy jako obiekty parametrów. W sparametryzowanym konstruktorze nazywamy ke słowo kluczowe K, które odwołuje się bezpośrednio do bieżącej instancji.
Następnie definiujemy konstruktor kopii, który przyjmuje parametr „emp”, aby odwołać się do obiektu klasy „pracownik”. Określamy metody gettera dla każdego z obiektów. Następnie nazywamy każdą metody Gettera i metod Setter, które kontrolują wartość w stosunku do każdego obiektu referencyjnego klasy. Następnie tworzymy drugą klasę programu, która jest „adresem”, który ma członek „kodu pocztowego”. Również definiujemy konstruktor kopii wewnątrz klasy, który przyjmuje odniesienie do obiektu klasy pracowników „EMP” typu int. Obiekt kodu pocztowego klasy „Adres” jest ustawiony z obiektem „EMP”.
Teraz obiekt „EMP” klasy pracownika i obiekt „Kod pocztowy” Klasa adresu Podaj te same dane. Następnie mamy klasę „główną”, w której metoda main () jest wdrażana, aby przypisać wartości do podanych atrybutów i wykonać je. Nazywamy klasę adresu () w obiekcie „EADD” i ustawiamy na nią wartość EADDress. W obiekcie „EMP” wartości dla innych dziedzin klasy pracownika są również inicjowane. Ponadto deklarujemy obiekt referencyjny „cloneofemp1”, który wskazuje na obiekt „EMP1”, który jest generowany przez nowe słowo kluczowe o nazwie „Pracownik”, który używa konstruktora kopii do kopiowania danych z pierwszego obiektu z pierwszego obiektu.
Następnie zmieniamy wartość adresu, który wpływa również na obiekt klonu „EADD”. Instrukcja drukowania wyświetla wyniki zmiany wartości obiektu klonu.
Adres obiektu konstruktora kopiowania jest modyfikowany, który jest wyświetlany na monicie Java:
Przykład 4:
Kopiowany obiekt można również utworzyć bez konstruktora kopii, po prostu podając zawartość jednego obiektu drugiego. Klonujmy obiekty klasowe bez korzystania z konstruktora kopii.
Importuj Java.Util.Skaner;Program jest zdefiniowany w klasie publicznej „produktu”, w której deklarujemy jego obiekty, które są PID, PNAME i PPRICE innego typu. Następnie tworzymy konstruktor dla określonej klasy bez żadnych argumentów. Następnie tworzymy sparametryzowany konstruktor klasy, w której wszystkie atrybuty klasy są zadeklarowane jako argument. Wewnątrz konstruktora klasy używamy zmiennej odniesienia „ta” z atrybutami klasy, która odnosi się do aktualnego obiektu konstruktora.
Następnie mamy definicję funkcji „ProductView” klasy „Produkt”, aby wyświetlić lub wydrukować wartości każdego z atrybutów klasowych. Następnie stosujemy metodę main (), w której używamy klasy skanera, aby uzyskać wartości dla atrybutów klasy „produktu”, aby utworzyć użytkownika. Gdy użytkownik wprowadzi wartość atrybutu, oryginalne wartości dla instancji klasowej są wyświetlane z funkcji ProductView (). Następnie tworzymy obiekt „produkt_copy”, w którym wywołujemy klasę „produkt ()”. Teraz produkt_copy ma zawartość klasy produktów. Kopiujemy więc atrybuty klasy „produkt” z nowymi obiektami produktu_copy. Zarówno atrybuty klasowe, jak i atrybut produktu_copy utrzymują te same wartości.
Wartości oryginalnego obiektu i skopiowanego obiektu są takie same bez użycia konstruktora kopii.
Wniosek
Konstruktory kopii Java są wydajnym i prostym sposobem na powielanie obiektów. Mogą tworzyć zarówno płytkie, jak i głębokie klony. Podaliśmy program wykonywalny konstruktorów kopii, w których realizowane są różne scenariusze. Ponadto konstruktorzy kopii mają wadę dziedziczenia. Ale możemy obejść tę trudność, włączając metodę, która uruchamia konstruktor kopii w klasach podstawowych i pochodnych.