2012-04-30 12 views
1

本の読書では、サブクラスのメソッドをオーバーライドすると、ランタイムポリモーフィズムを意味します。コンパイル時の多型性のようなものはありますか?コンパイル時に単純継承が起こったと思ったら、多態性は実行時です。コンパイル時の多型?

答えて

2

それらは時々コンパイル時の多型と呼ばれるを、オーバーロード方法を示唆しています。

実際、メソッドオーバーロードを使用すると、パラメータとして渡されるオブジェクトのタイプに基づいて、さまざまなコードを呼び出すことができます。オーバーロードはコンパイル時に解決されるため、オーバーロードのメカニズムはコンパイル時の多態性と考えることができます。

+0

あなたは説明できますか? – user1364686

+0

@ user1364686確かに、更新を見てください。 – dasblinkenlight

+0

コンパイル時にオーバーロードされるため、実行時にオーバーライドされますか? – user1364686

1

Lucca CardelliにはOn Understanding Types, Data Abstraction and Polymorphismという名前の素晴らしい記事があり、あなたの質問に対する答えを詳細に説明しています。

質問にはad-hoc polymorphismと呼ばれ、メソッドのオーバーロードとタイプのコヒーシオン(演算子のオーバーロードのようなもの)があり、これらはコンパイル時に発生します。一方、与えられたメソッドに適切な実装を選択することは、実行時に発生します。これはparametric or inclusion polymorphismの一部です。

しかし、私はLucca Cardelliがあなたに与えることができるよりも良い答えをあなたに与えるだろうと確信しています。

最近、私はこのフォーラムでanother similar questionに参加し、これら2つのタイプの多型のいくつかの例を提供しました。あなたがすでに知っているかもしれない印象を持っていますが、あなたはそれを見てみたいかもしれません。

Polymorphism in Object-oriented Programming languagesもお読みください。

+0

計算にはどのように関係していますか? – user1364686

+0

これは数学のような微積分ではなく、計算を理解するための最も確かな基礎の1つであるラムダ微積分です。タイプ理論のいくつかの概念を紹介するのに役立ちます。このラムダ計算は、あなたが言及した非ラムダ系の最も原始的な形式を示しています。質問に対する答えは最初の2〜5ページです。最初のページの説明を理解してください。 –