Różnica między konstruktorem a niszczycielem

Klasa stanowi rdzeń programowania obiektowego (OOP). To jest jak schemat tworzenia obiektów, który zapewnia wartości początkowe dla zmiennych składowych i funkcji składowych. Jest to podstawowy element OOP, który określa naturę przyszłego obiektu. Najważniejszą rzeczą w klasie jest to, że definiuje nowy typ danych, a po zdefiniowaniu może być używana do tworzenia obiektów tego typu. Wystarczy więc powiedzieć, że klasa jest szablonem obiektu, a obiekt w rzeczywistości jest instancją klasy. Służy do tworzenia nowych obiektów i zarządzania nimi oraz wspierania dziedziczenia, które jest jedną z podstawowych koncepcji obiektowych języków programowania, takich jak Java. Krótko mówiąc, klasa organizuje informacje o typie danych, aby ponownie wykorzystać elementy podczas tworzenia wielu instancji tego typu danych. Dane lub zmienne zdefiniowane w klasie nazywane są zmiennymi instancji.

Co to jest konstruktor?

Konstruktor to specjalna funkcja członka klasy, która jest wywoływana podczas tworzenia instancji obiektu. Inicjowanie wszystkich zmiennych w klasie może być czasami trudne przy każdym utworzeniu instancji. Ponieważ wymóg inicjowania jest powszechny w programowaniu obiektowym, umożliwia on automatyczną inicjalizację obiektów podczas ich tworzenia. Ten proces automatycznej inicjalizacji odbywa się za pomocą konstruktora. Powodem, dla którego nazywany jest specjalnym, jest to, że metoda instancji ma zwykle taką samą nazwę jak klasa. Inicjuje obiekt natychmiast po utworzeniu i może służyć do ustawiania wartości elementów obiektu. Konstruktor jest syntaktycznie podobny do metody w programowaniu obiektowym, a metoda jest procedurą powiązaną z klasą i zawartą w dowolnym obiekcie tej klasy. Krótko mówiąc, konstruktor jest wywoływany za każdym razem, gdy tworzony jest obiekt klasy. Najważniejszą rzeczą w konstruktorach jest to, że nie mają typu zwrotu, a nawet nieważności.

Co to jest Niszczyciel?

Destruktor to zupełnie inna koncepcja; jest to specjalna metoda, która jest wywoływana, gdy instancja klasy jest usuwana z pamięci. Destruktor jest wywoływany automatycznie, gdy obiekt nie jest już potrzebny lub ma zamiar zniknąć lub zostanie zwolniony jawnie. Głównym celem niszczyciela jest pozbycie się zasobów, których obiekt używał podczas swojego cyklu życia. Daje temu obiektowi ostatnią szansę na zwolnienie przydzielonej pamięci, dzięki czemu na stosie będzie wystarczająca ilość miejsca do przechowywania nowych obiektów w celu wydajnego uruchamiania programów. Niszczyciele są często używane w połączeniu z konstruktorami, z wyjątkiem tego, że służą do niszczenia obiektów utworzonych za pomocą konstruktorów. Chodzi o to, aby dezinicjować obiekty po ich usunięciu, aby zwolnić pamięć dla nowych obiektów. Podobnie jak konstruktory, destruktory są zdefiniowane jako podprogramy w definicji klasy i mają taką samą nazwę jak nazwa klasy, z tym że destruktor jest poprzedzony znakiem ~ (tylda) operator. Destruktory są wywoływane jawnie w C ++, jednak w Javie nie ma destruktorów.

Różnica między konstruktorem a niszczycielem

Cel Konstruktora i Niszczyciela

Zarówno konstruktory, jak i destruktory są specjalnymi funkcjami składowymi każdej klasy, ale mają różne koncepcje. Do zainicjowania wystąpienia klasy służy konstruktor, co oznacza, że ​​jest on wywoływany za każdym razem, gdy tworzona jest instancja klasy, natomiast destruktor jest przeciwieństwem konstruktora, który jest wywoływany w odwrotnej kolejności.

Przydział pamięci

Konstruktor jest wywoływany za każdym razem, gdy tworzona jest nowa instancja klasy. Zasadniczo jest to funkcja składowa klasy, która inicjuje obiekt natychmiast po utworzeniu i przydziela mu pamięć. Z drugiej strony, destruktor jest wywoływany, gdy instancja klasy jest usuwana z pamięci, co z kolei dezinicjuje obiekty utworzone za pomocą konstruktorów w celu zwolnienia pamięci dla nowych obiektów.

Nazwa

Zarówno konstruktory, jak i destruktory są specjalnymi funkcjami składowymi klasy o tej samej nazwie co nazwa klasy, z tym że destruktor jest poprzedzony operatorem ~ (tyldy). Konstruktor jest niczym innym, jak metodą, która nie ma typu zwrotu, nawet nie jest pusta, podczas gdy destruktory są dokładnie przeciwieństwem konstruktorów.

Przeciążenie

Zarówno konstruktory, jak i destruktory są wywoływane automatycznie po utworzeniu i usunięciu. Jednak w przeciwieństwie do konstruktorów, destruktorów nie można przeciążać. Przeciążenie to obiektowa koncepcja programowania, która umożliwia zdefiniowanie dwóch lub więcej funkcji o tej samej nazwie, dzięki czemu można je wywoływać przy użyciu różnych list argumentów.

Argumenty

W programowaniu obiektowym konstruktorzy często akceptują argumenty, których używają do ustawiania wymaganych zmiennych składowych, podczas gdy destruktory nie akceptują żadnych argumentów.

Działanie Konstruktora i Niszczyciela

Konstruktory pozwalają obiektowi na zainicjowanie części jego wartości przed użyciem, podczas gdy destruktory pozwalają obiektowi na wykonanie części kodu w momencie jego niszczenia.

 Constructor Verses Destructor: Tabela porównawcza

Podsumowanie vs. Konstruktor vs. Burzyciel

Zarówno konstruktory, jak i destruktory są specjalnymi funkcjami składowymi klasy o tej samej nazwie co nazwa klasy, z tym wyjątkiem, że destruktory są poprzedzone operatorem ~ tyldy. Konstruktor jest niczym innym jak metodą, z wyjątkiem tego, że jest wywoływany, gdy tworzona jest instancja obiektu, natomiast destruktor jest dokładnie przeciwieństwem konstruktorów, które są wywoływane, gdy instancja obiektu jest usuwana z pamięci. Celem destruktorów jest dezinicjalizacja obiektów utworzonych za pomocą konstruktorów w celu zwolnienia miejsca w pamięci w celu pomieszczenia nowych obiektów.