![]() |
|||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||
<<5.継承の目次 | ![]() |
||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||
![]() |
![]() |
||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||
問題6(難易度:2) 2005年5月23日 | ![]() |
||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||
|
![]() |
||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||
解説 選択肢のメソッド名はすべてスーパークラスAのメソッドと同じmethodAなので、ここはオーバーライド(上書き)かオーバーロードを考えなければならないですね。 まずAは戻り値の型はdoubleで同じですが、引数部分がちがいます。よってメソッドのシグネチャが異なることになり、オーバーロードでOK。methodAを引数なしで呼ばれればクラスBの、int型の引数一つで呼ばれればクラスAのmethodAが使われることになります。 次はB。引数はint型一個で完全にシグネチャは一致し、戻り値の型も一致するのでオーバーライドになります。クラスAのmethodAがこれで上書きされることになります。 Cはシグネチャは一致するのでオーバーロードにはなりません。また戻り値の型が異なるので、オーバーライドもできません。コンパイルエラーになります。 Dはシグネチャも戻り値の型も一致するのでオーバーライドできるかというと、アクセス修飾子がpublicからprivateに狭まっているので、やはりコンパイルエラーになります。 Eはシグネチャが異なるのでオーバーロードできることになり、OKです。 解答 A B E 参考 第19章 オーバーロードとオーバーライド |
![]() |
||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||
![]() |
![]() |
||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||
問題7(難易度:2) 2005年5月27日 | ![]() |
||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||
|
![]() |
||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||
解説 クラスAのメソッドmethodと、クラスBのmethodは、引数の並び、戻り値の型ともに同じなので、前者を後者が上書き(オーバーライド)していることになります。(仮引数名はpとqでちがいますが、これは本質的な違いではありません。)アクセス修飾子は、前者が「protected」、後者が「public」なので、狭くなっていないので問題ありません。 さて出力を見ましょう。最初の「a.method(5)」は、変数aのクラスはAなので、クラスAのmethodが呼ばれます。よって5+3の8が出力されます。次の「b.method()」は、変数bのクラスがBなので、クラスBで上書きしたmethodが呼ばれます。よって5×3の15が出力されます。 解答 D 参考 第14章 |
![]() |
||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||
<<5.継承の目次 | ![]() |
||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||
Copyright (c) 2004-2005 Nagi Imai All Rights Reserved.. | ![]() |
||||||||||||||||||||||||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |