title: How should a basic class hierarchy be constructed?
body: <p>I know how to code and use simple classes, and I even know how inheritance works and how to use it. However, there's a very limited amount of guides on how to actually <strong>design the structure</strong> of your class hierarchy, or even how to design a simple class? Also, when and why should I inherit (or use) a class?</p>
  
  <p>So I'm not really asking about <strong>how</strong>, I'm asking <strong>when</strong> and <strong>why</strong>. Example codes are always a good way to learn, so I would appreciate them. Also, emphasize the progress of designing rather than simply giving one sentence on when and why.</p>
  
  <p>I program mainly in C++, C# and Python, but I'll probably understand the simple examples in most languages.</p>
  
  <p>If any of the terms seem mixed up or so, feel free to edit my question. I'm not a native and I'm not sure of all the words.</p>