2016年1月31日のブックマーク (1件)

  • オーバーライドとオーバーロードは全く別物

    EffectiveJavaを読んでて、C++でも当てはまるのかな?と思って試してみたら当てはまったので… まとめ オーバーライドされたvirtualなメソッド呼び出しは実行時に決定 実態が子クラスなら、親クラスとして扱っても子クラスのメソッドが実行される 実態が孫クラスの場合は孫クラスのメソッドが呼ばれる 親から子、孫へと呼び出される関数が探されていく感じ オーバーロードされたメソッド呼び出しはコンパイル時に決定 virtual関数のように実態で切り替えが出来ない 実態が子クラスでも、親クラスとして扱うなら親クラスのメソッドが実行される 一致するものが無い場合は親クラスにキャストして一致するものを探す 子から親へと一致するものを探していく感じ オーバーライドとは メソッドのオーバーライドとは、親クラスのメソッドを子クラスで再定義することです。 C++では親クラスでvirtualにされている

    ota42y
    ota42y 2016/01/31
    オーバーライドとオーバーロード、カタカナだとよく似てるから紛らわしいけど、英語として理解すると全然別物と覚えられるのかな?