Two interesting ideas that helped me get insight into OO:
1) An object is a poor man's closure; and a closure is a poor man's object.
2) Most object-oriented programming is done with mutable state, which muddles what OO is. You don't really need state to have objects.
In a closure, the lexical scope is preserved, and the functions defined in it can access it any time. This is very similar to what an object does: https://stackoverflow.com/a/2498010
1) An object is a poor man's closure; and a closure is a poor man's object.
2) Most object-oriented programming is done with mutable state, which muddles what OO is. You don't really need state to have objects.
In a closure, the lexical scope is preserved, and the functions defined in it can access it any time. This is very similar to what an object does: https://stackoverflow.com/a/2498010
When objects are immutable, one gets to truly appreciate the elegance of grouping both data and their functions together: https://dev.realworldocaml.org/objects.html#scrollNav-3