Деструкторы – пример класса ClubMember

Что происходит, если программа создает и уничтожает объекты ClubMember? Очевидно, что значение атрибута numberOfMembers быстро потеряет смысл. Исправить эту ситуацию можно, введя в класс операцию для уменьшения значения атрибута numberOfMembers и обеспечив ее вызов при каждом уничтожении экземпляра класса ClubMember.
В некоторых ОО языках программирования есть специальные операции уровня экземпляра, называемые деструкторами, которые автоматически вызываются в момент уничтожения объекта. Например, в С++ деструктор всегда имеет форму ~ИмяКласса (списокПараметров). В С++ операция уничтожения гарантированно вызывается в момент уничтожения объекта. В Java есть аналогичная возможность: каждый класс имеет операцию под названием finalize(), которая вызывается при окончательном уничтожении объекта. Но сама программа явно не уничтожает объекты.
Этим занимается автоматический сборщик мусора. Вам известно, что finalize() будет вызван, но вы не знаете, когда это произойдет! Конечно, это не подходит для нашего простого приложения со счетчиком. Здесь приходится самостоятельно уменьшать значение атрибута numberrOfMembers, вызывая операцию уровня класса decrementNumberOfMemmbers(), когда работа с объектом завершена и он отправляется в сборщик мусора.
C# имеет аналогичную Java семантику уничтожения, только операция называется Finalize().

Запись опубликована в рубрике Компьютеры и интернет с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

code