class name = object (self) ... end class ['a] stack = object (self) val mutable list = ([] : 'a list) (* instance variable *) method push x = (* push method *) list <- x :: list method pop = (* pop method *) let result = List.hd list in list <- List.tl list; result method peek = (* peek method *) List.hd list method size = (* size method *) List.length list end;; class ['a] stack : object val mutable list : 'a list method peek : 'a method pop : 'a method push : 'a -> unit method size : int end Virtual Superclass Virtual Constructor Virtual method