Como dice Heimish, en la progamación orientada a objetos es conveniente implementar los métodos que repercuten al objeto sobre él mismo. De esta forma, podremos actuar sobre el objeto modificándolo a nuestro gusto. Tal y como habías hecho en tu código, bastaría recoger los resultados en una pila nueva:
Código:
Apilar p = Pila2.invierte();
//Imprimir p
Sin embargo esta no es la idea de la POO. Lo ideal es ejecutar el invertir() sobre la misma pila y que este método modifique la misma. Con el código que ha puesto Heimish, se podría hacer:
Código:
Pila2.invierte();
//Imprimir Pila2
No necesitas una nueva instancia