ЗАДАЧА 06.05.01.

package com.javarush.test.level06.lesson05.task01;

/* Метод finalize класса Cat
В классе Cat создать метод protected void finalize() throws Throwable
*/

public class Cat
{
    protected void finalize() throws Throwable
    {

    }

}

ЗАДАЧА 06.05.02.

package com.javarush.test.level06.lesson05.task02;

/* Классы Cat и Dog и метод finalize для каждого
В каждом классе Cat и Dog написать метод finalize, который выводит на экран текст о том, что такой-то объект уничтожен.
*/

public class Cat
{
    String cat;

    protected void finalize() throws Throwable
    {
        System.out.println(cat + " уничтожен");
    }
}

class Dog
{
    String dog;

    protected void finalize() throws Throwable
    {
        super.finalize();
        System.out.println(dog + " уничтожен");
    }

}

 ЗАДАЧА 06.05.04

package com.javarush.test.level06.lesson05.task04;

/* Cчётчик котов
В конструкторе класса Cat [public Cat()] увеличивать счётчик котов (статическую переменную этого же класса catCount) на 1. В методе finalize уменьшать на 1.
*/

public class Cat
{
    public static int catCount = 0;

    public Cat()
    {
        this.catCount = catCount + 1;
    }

    @Override
    protected void finalize() throws Throwable
    {
        catCount = catCount - 1;
    }

    public static void main(String[] args) {
    }
}