Konstruktor i niszczyciel

Anonim

Klasa znajduje się w samym sercu programowania obiektowego (OOP). To jest jak plan tworzenia obiektów, które zapewniają wartości początkowe dla zmiennych składowych i funkcji składowych. Jest to podstawowy element konstrukcyjny OOP, który określa naturę przyszłego obiektu. Najważniejszą rzeczą w klasie jest to, że definiuje on nowy typ danych i po zdefiniowaniu może być użyty do tworzenia obiektów tego typu. Zatem wystarczy powiedzieć, że klasa jest szablonem dla obiektu, a obiekt jest w rzeczywistości instancją klasy. Służy do tworzenia nowych obiektów i zarządzania dziedziczeniem, które jest jedną z podstawowych koncepcji obiektowych języków programowania, takich jak Java. W skrócie, klasa organizuje informacje o typie danych, aby ponownie użyć elementy podczas tworzenia wielu instancji tego typu danych. Dane lub zmienne zdefiniowane w ramach klasy są nazywane zmiennymi instancji.

Co to jest Konstruktor?

Konstruktor jest specjalną funkcją składową klasy, która jest wywoływana podczas tworzenia instancji obiektu. Czasami może być trudno zainicjować wszystkie zmienne w klasie za każdym razem, gdy tworzona jest instancja. Ponieważ wymóg inicjalizacji jest powszechny w programowaniu obiektowym, pozwala obiektom zainicjować się automatycznie po ich utworzeniu. Ten proces automatycznej inicjalizacji odbywa się za pomocą konstruktora. Powodem, dla którego jest on nazywany specjalnym, jest to, że metoda instancji zwykle ma taką samą nazwę jak klasa. Inicjuje obiekt natychmiast po utworzeniu i można go użyć do ustawienia wartości elementów obiektu. Konstruktor jest syntaktycznie podobny do metody programowania obiektowego, a metoda jest procedurą powiązaną z klasą i zawartą w dowolnym obiekcie tej klasy. W skrócie, 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, nawet nieważne.

Co to jest destruktor?

Destruktor jest całkowicie inną koncepcją; 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 zniknąć lub jest jawnie zwolniony. Głównym celem destruktora jest pozbycie się zasobów, z których obiekt korzystał podczas jego cyklu życia. Daje obiektowi ostatnią szansę uwolnienia pamięci przydzielonej tak, aby na stercie było wystarczająco dużo miejsca do przechowywania nowych obiektów, aby wydajnie uruchamiać programy. Destruktory 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 deinicjalizację obiektów po ich usunięciu w celu zwolnienia pamięci dla nowych obiektów. Podobnie jak konstruktory, destruktory są zdefiniowane jako podprogramy w definicji klasy i mają taką samą nazwę jak nazwa klasy, z wyjątkiem tego, że destruktor ma przedrostek ~ operator (tylda). Destruktory są jawnie wywoływane w C ++, jednak w Javie nie ma destruktorów.

Różnica między konstruktorem a destruktorem

Cel konstruktora i destruktora

Zarówno konstruktory, jak i destruktory są specjalnymi funkcjami składowymi każdej klasy, ale mają różne koncepcje. Konstruktor służy do inicjowania instancji klasy, co oznacza, że ​​jest wywoływana za każdym razem, gdy tworzona jest klasa, podczas gdy destruktor jest przeciwieństwem konstruktora, który jest wywoływany w odwrotnej kolejności konstruktorów.

Przydzielanie pamięci

Konstruktor jest wywoływany za każdym razem, gdy tworzona jest nowa instancja klasy. Jest to zasadniczo funkcja składowa klasy, która inicjalizuje obiekt natychmiast po utworzeniu i przydziela do niego pamięć. Z drugiej strony destruktor jest wywoływany, gdy instancja klasy jest usuwana z pamięci, która z kolei deinicjalizuje obiekty, które zostały utworzone za pomocą konstruktorów w celu zwolnienia pamięci dla nowych obiektów.

Imię

Zarówno konstruktory, jak i destruktory są specjalnymi funkcjami składowymi klasy o tej samej nazwie, co nazwa klasy, z wyjątkiem tego, że destruktor jest poprzedzony operatorem ~ (tylda). Konstruktor jest tylko metodą, która nie ma typu powrotu, nawet nieważną, 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 destruktory nie mogą być przeciążone. Przeciążanie to koncepcja programowania obiektowego, która pozwala zdefiniować dwie lub więcej funkcji o tej samej nazwie, aby można było wywoływać je za pomocą 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.

Praca konstruktora i destruktora

Konstruktorzy pozwalają obiektowi zainicjować część jego wartości, zanim zostanie on użyty, podczas gdy destruktory pozwalają obiektowi na wykonanie części kodu w momencie, gdy jest on niszczony.

Constructor Verses Destructor: Tabela porównawcza

Podsumowanie konstrukcji Vs. Burzyciel

Zarówno konstruktory, jak i destruktory są specjalnymi funkcjami składowymi klasy o tej samej nazwie co nazwa klasy, z wyjątkiem destruktorów poprzedzonych przez operatora ~ tyldy.Konstruktor jest tylko metodą, z wyjątkiem tego, że jest wywoływana podczas tworzenia instancji obiektu, podczas gdy 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 deinicjalizacja obiektów utworzonych za pomocą konstruktorów w celu zwolnienia miejsca w pamięci w celu dostosowania do nowych obiektów.