Personally, I only understood the OOP theory (explanation generalization) about classes by observing their behavior in specific exemplar situations e.g. exact same code behaves differently when included in a package scoped class I.e. public, friend or private vs a module (which I call free-range cos it can do it’s thing 🎶whenever, wherever🎶).