1つのオブジェクトを複数の型として使いたいとき

典型的な具体例は二つあって、
1つは抽象的な(中身にプログラマーがタッチしない)データ型を実装するときと、
もう1つはサイズが同じ複数の型が不規則に連続するデータ構造を
(恐らくはファイルから)配列に読み込んで解析したいとき