プログラミング言語では、子オブジェクトが親の代替として動作するようにする場合は、それ自身のID(子供の)を失ってはいけませんが、親の許可が必要です。それがC#やC++で仮想メソッドを仮想化する理由です。そして、これは完全な隠れになります。完全な隠れはJavaでオーバーライドと見なされますか?私はそれが隠れていると思っていると思うので、私は間違ったコンセプトを持っています。オーバーライドされた関数は、JAVAだけが関わっているように、完全に隠すことができますか?Liskovの置換の原理は、Javaのオーバーライドにどのように関係していますか?完全なヒディングとオーバーライドの違いは何ですか?
0
A
答えて
0
リスキーオフの置換の原則は、具体的な子実装ではなく、抽象的な親実装を返す関数にリンクされています。 GetListの方法は具体的リストの実装を返す最初のケースでは、上記の例では第2の場合の例
ArrayList getList vs List getList
ためGETLIST方法は、Listインタフェースのインスタンスを返します。今度はリスコフの置換の原則に従って、2番目のメソッドをサブクラスでオーバーライドしてListの異なる具体的な実装を返すことができるので、2番目のアプローチを使用する必要がありますが、最初はArrayListのサブクラスのArrayListのみが返されます。したがって、最初のケースは2番目のケースよりも抽象的ではなく、リスコフの置換原理に従って、親の実装は、必要なだけ自由に実装できるようにできるだけ抽象的でなければなりません。
メソッド隠蔽については、静的メソッドでのみ可能です。 Javaでオーバーライドしても、インスタンスレベル以降のメソッドは非表示になりません。しかし、静的メソッドの場合、メソッドはクラスレベルであるため、多態性は不可能です。したがって、サブクラスが同じ名前、引数、戻り値の型を持つ静的メソッドを作成し、そのメソッドに静的にアクセスしようとすると、クラスのバージョンが呼び出され、スーパークラスのバージョンではなく、サブクラスがスーパークラスからメソッドを非効率的に隠してしまったためです。
関連する問題
- 1. Java配列の共分散はLiskovの置換原理に違反していますか?
- 2. GWTのActivityMapperはLiskovの置換原理に違反していますか?私のGWTアプリケーションで
- 3. オーバーライドされたメソッド引数を絞り込むと、Liskov置換原則違反になりますか?
- 4. メソッドのオーバーロードとオーバーライドの違いは何ですか?
- 5. GoFビルダーとLiskovの置換原則
- 6. Liskovの置換原理を理解する
- 7. 関数のオーバーライドはどこで完了しましたか?
- 8. 小包と完全な財産の違いは何ですか?
- 9. プログレッシブアプリと完全レスポンスサイトとはどのように違いますか?
- 10. Spark Javaヒープサイズをどのようにオーバーライドしますか?
- 11. IS-A関係とHAS-A関係の違いは何ですか? Java
- 12. どのようにしてJavaオブジェクトのメソッドをオーバーライドできますか?
- 13. シェイプの位置とグラデーションの位置はHTML5キャンバスにどのように関係していますか?
- 14. 「フィードフォワードネットワーク」と「完全接続ネットワーク」の違いは何ですか?
- 15. javax validatorとhibernateバリデータはどのように関連していますか?違いは何ですか?
- 16. 'plexus'とは何ですか?それはどのようにmavenに関係していますか?
- 17. この `/ error`エンドポイントはどのようにオーバーライドされますか?
- 18. knoxとAWS SDKの違いは何ですか?node.jsにはどのような違いがありますか?
- 19. Laravelで直接関係にアクセスしてwithとの違いは何ですか?
- 20. m-m関係のmappedByとbelongsToの違いは何ですか?
- 21. Neo4jとSQLの関係の違いは何ですか?
- 22. Mavenのリポジトリと依存関係の違いは何ですか?
- 23. プライベート関数をオーバーライドすると、プロテクトとどのように違うのですか?
- 24. アーティファクトのPyPIパッケージを完全にオーバーライド
- 25. 前のgitコミットを完全にオーバーライド
- 26. メソッドをオーバーライドするときは、メソッド全体をオーバーライドしないでください。私はjava.awt.Container.paintをオーバーライドしようとしました
- 27. OmnifacesからいくつかのJavascript関数をどのようにオーバーライドすることができますか?
- 28. jQueryは関数型プログラミングとどのように関係していますか?
- 29. 1つのModelAdminに対してdate_hierarchy関数をオーバーライドするにはどうすればよいですか?
- 30. Rの不完全なエラーメッセージをオーバーライド
[C#とJavaで仮想関数はどのように機能しますか?](http://stackoverflow.com/questions/460446/how-do-virtual-functions-work-in-c-sharp-and-java) ) –
いいえ、私はC#またはC++で仮想を実装するのが純粋な方法であるかどうかを知りたいのですか? –