OCaml имеет структурную типизацию для объектов, а не номинативную типизацию, как в Java. Таким образом, тип объекта в основном определяется (и определяется только) его методами. Объекты в OCaml можно создавать напрямую, не проходя что-то вроде класса.
Вы можете написать функции, которые требуют, чтобы у объектов-аргументов были определенные методы (и чтобы у этих методов были определенные типы); например, следующий метод принимает аргумент, который является любым объектом с методом "bar":
let foo x = x#bar