語感とイメージが一致しません。解答:それは勘違いです。サブクラスはスーパークラスのフィールド・メソッドなんて持っていませんよ?恐らく皆さんは「サブクラスって実はスーパーじゃね?」と疑問に思うことでしょう。サブクラスはスーパークラスのフィールド・メソッドが使えてさらに自分のフィールド・メソッドまで使えるわけですから、「スーパー」と「サブ」が逆なんじゃ、と思われるかもしれません。継承で機能を加える」で紹介したNormalSuperクラスとAddedSubクラスで考えてみましょう。int型変数のdataフィールドです。フィールドを出力するメソッドです。NormalSuperクラスから継承した、サブクラス。フィールドとメソッドを追加しています。int型変数のdataSubフィールドです。フィールドを出力するメソッドです。このクラスで追加したフィールドを出力。ついでにスーパークラスのフィールドも出力。このクラスを実行してください。インスタンスを1つ作り数値を入れます。スーパークラスのフィールドに値を入れて出力します。サブクラスのフィールドに値を入れて出力します。int型変数のdataフィールドです。フィールドを出力するメソッドです。NormalSuperクラスから継承した、サブクラス。フィールドとメソッドを追加しています。int型変数のdataSubフィールドです。フィールドを出力するメソッドです。このクラスで追加したフィールドを出力。ついでにスーパークラスのフィールドも出力。このクラスを実行してください。インスタンスを1つ作り数値を入れます。スーパークラスのフィールドに値を入れて出力します。サブクラスのフィールドに値を入れて出力します。100}}NormalSuperクラスがスーパークラスです。int型変数のdataフィールドです。フィールドを出力するメソッドです。int型変数のdataフィールドです。フィールドを出力するメソッドです。);}}そしてAddedSubクラスがサブクラスです。NormalSuperクラスから継承した、サブクラス。フィールドとメソッドを追加しています。int型変数のdataSubフィールドです。フィールドを出力するメソッドです。このクラスで追加したフィールドを出力。ついでにスーパークラスのフィールドも出力。NormalSuperクラスから継承した、サブクラス。フィールドとメソッドを追加しています。int型変数のdataSubフィールドです。フィールドを出力するメソッドです。このクラスで追加したフィールドを出力。ついでにスーパークラスのフィールドも出力。);}}よく見てみましょう。NormalSuperクラスとAddedSubクラスは別々です。継承をしても、スーパークラスとサブクラスがくっついちゃってるわけじゃないんです。「でもサブクラスを通してスーパークラスのフィールド・メソッドが使えるじゃないか」と思うかもしれません。それはちょっと違います。「サブクラスを通して」じゃないんです。「サブクラスのインスタンスを通して」なんです。サブクラスのインスタンス「サブクラスのインスタンス」は、スーパークラスのインスタンスも持っています。そのため、サブクラスのインスタンスを通して、スーパークラスのインスタンスが持つフィールドやメソッドを使うことができます。「すごい」のはサブクラスのインスタンスなのです。サブクラスのインスタンスはスーパークラスのインスタンスも持っているわけですから、スーパークラスのインスタンス単体よりすごいわけです。これは、あくまで「サブクラスのインスタンス」。「サブクラスそのもの」じゃありません。サブクラスはサブクラスであって、インスタンスとは別物です。「サブクラスのインスタンス」を「サブインスタンス」とは言いません。「サブクラスのインスタンス」は常に「スーパークラスのインスタンス」を持っています。「スーパークラスのインスタンス」を持たない「サブクラスのインスタンス」はありません。「サブクラスのインスタンス」は常に「スーパークラスのインスタンス」より「すごい」わけです。クラスはインスタンスの設計図です。スーパークラスとサブクラスに設計図が書かれていて、それらを元にインスタンスを作ります。できたインスタンスは、各設計図によって作られた「1つの実体」というわけです。オブジェクト指向とJavaこのページは、Java言語を用いたオブジェクト指向プログラミングのチュートリアル解説を行う「Javaのオブジェクト指向入門」の一ページです。詳しい説明は「Javaのオブジェクト指向入門」目次をご覧ください。