Debouncing array buttons

for (short i=0; i<4; i++){
    for (short j=0; j<4; j++){
        Bounce button[i][j] = Bounce();
        button[i][j].attach(array[i][j]);   //array is filled with input pins
        button.interval(5);
    }
}

Creating an array of buttons that is local to the inner loop seems pointless. The Bounce constructor should never be called directly. Even if it could be, it doesn't return an array of instances.

You can declare a global (not local) array of Bounce objects.

Bounce bounces[4][4];

You can attach those objects to pins, using nested for loops as you are doing here. But, you do NOT call the constructor or declare an array in the inner loop.

for (short i=0;i<4;i++)
{
    for (short j = 0;j<4;j++)
    {
        bounces[i][j].attach(array[i][j]);
    }
}