These have been some of my most popular posts, and like many of my more popular posts, they were born out of raw frustration. As a Rust apologist, I quickly got sick and tired of people complaining about how Rust doesn’t support inheritance, or fields in traits, or some other such feature from OOP land---or worse, asking how to do something very OOP, with no explanation of why that feature’s actually necessary.

Thus, this series, with one post for each of the three pillars of OOP, as I learned them from a Java book when I was a kid: encapsulation, polymorphism, and inheritance.

Those posts are what they say on the can, and I’ll save the arguments for the posts themselves:

These posts sort of ephemerally aligned, and so I included them in my “series” as well:

And this post also seems apropos, though I list it under programming language design: