Fala galera preciso de um help to com esse exercicio pra fazer e eu travei

Construa uma pilha de 5 posições, contendo
números inteiros, não repetidos. O programa deverá, antes de qualquer manipulação na pilha,
perguntar ao usuário se este deseja mostra a pilha, empilhar ou desempilhar, após essa
informação será realizada a manipulação na pilha, lembrando que uma pilha vazia não pode
desempilhar e que uma pilha cheia não pode empilhar.

System.out.println("deseja mostrar a pilha, empilhar ou desempilhar?");
// Agora leia a resposta do usuário e tome as decisões

eu entendi essa parte, so n entendi o q é a pilha e como faço pra empilhar ou desempilhar

consegui chegar ate aqui nao sei o q mais precisa
package javaapplication50;

public class pilha {

public Object[] pilha;

public int posicaopilha;

public pilha () {

   this.posicaopilha = -1;


   this.pilha = new Object[5] ;

}

public boolean vazia () {

   if (this.posicaopilha == -1){


       return true;


   }


        return false;

}

public int tamanho(){

   if (this.vazia()){


       return 0;


   }


   return this.posicaopilha +1;

}

public void empilhar (Object valor){

   if (this.posicaopilha < this.pilha.length -1){


       this.pilha[++posicaopilha] = valor; 

  
       
   }

}

public Object desempilhar () {

   if (vazia()) {


       return null;


   }


   return this.pilha[this.posicaopilha--];

}

}