scala/ScalaBook/chapter-03/stack.scala

class Stack[Q] (n: Int) {
   private var S:Array[Q] = new Array[Q](n)
   private var top = 0;
   def push(elem: Q) { 
       top = top + 1
       S(top) = elem
   }
   def pop () : Q = {
     var oldtop = top
     top = top - 1
     S(oldtop)
   }
}

var x = new Stack(3)
x.push(3)
x.push(4)
println(x.pop())
var y = new Stack[String](4)
y.push("C++")
y.push("Java")
println(y.pop())