インタフェースとObject型についての質問です。
クラス BaseX と RunnerX を以下のように定義しました。

public BaseX { /* からっぽ */ }

public class RunnerX
extends BaseX
implements Runnable
{
public void run() { /* 実装は省略 */ }
}
で、RunnerXのオブジェクト x を作ります。
RunnerX rx = new RunnerX();

rxをBaseXまたはRunnable変数に代入する以下の式はもちろん
コンパイルできて実行時も例外を発生しません。
BaseX bx = rx;
Ruunable r = rx;

しかしこのように代入されたRunnable型変数 rを
BaseX型変数に代入しようとするとコンパイルエラー
になります。(互換性のない型 と怒られる)

BaseX bx2 = r; // コンパイルエラー!!

これは納得です。
が、疑問に思っているのは、Runnable型のrをObject型変数
に代入する式、

Object obj = r;

がコンパイルOKってことです。
「Objectはすべてのクラスのツリーのルートだが、インタフェース
には共通のルートはない」という原則にそぐわない気がするのです。
なんかすっきりした説明のできる方いませんか?