-4

これらは OO の概念です。

  • 継承
  • ポリモーフィズム
  • 抽象化
  • カプセル化

では、各 OO プログラミング言語がこれらの手法をすべて実装していると言えますか? または、そうでなければ、すべてのオブジェクト指向言語に共通するものは何ですか? たとえば、Java と JavaScript を比較します。ばかげた質問ではありません。たとえば、Java などの一部の言語では、Scala では多重継承が許可されていますが、多重継承は許可されていません。つまり、Java は完全なオブジェクト指向言語ではありません。たとえば、各 OO 言語がポリモーフィックであると言うのは完全に正しいかどうか、疑問に思っています。乾杯

4

2 に答える 2

1

簡単な答え: いいえ。

here は、..「本物の」オブジェクト指向言語の定義ができないことを指摘している素晴らしい記事です。

オブジェクト指向とコンピューター言語の間にはさまざまな関係があります。OO のサポート、OO のユビキタスな使用、および OO の強制です。繰り返しになりますが、明確にするための努力をお勧めします。たとえば、「Java は OO をサポートしていますが、どこでも使用しているわけではありません」、「SmallTalk はあらゆる場所で OO を使用しており、整数に対しても使用しています」、「Java はすべてのコードをメソッドに入れることで OO を強制しています」等 ソース

この OOP 概念のいくつかは、ほとんどの言語の後に作成され、その後のバージョンでは..それらにはさまざまなレベルのサポートがあります。

それは本当に言語の主な原則に依存します。魔女の概念はサポートまたは必須である必要があります。

オブジェクト指向機能を備えた言語(50 以上)

于 2012-12-20T12:07:07.600 に答える
0

まず第一に、私は絶対に同意しません

...たとえば Java では、Scala が許可している場合に多重継承を許可していません。つまり、Java は完全なオブジェクト指向言語ではありません。

オブジェクト指向が他の言語の機能に基づいてどのように言語であるかを判断する場合、「完全な」オブジェクト指向言語は見つからないと思います。私がすべきことは、オブジェクト指向のルーツを追跡し、特定の言語がそのパラダイムにどれだけ準拠しているかを確認することです。本当に良い読み物は、Alan Kay のSmalltalk の初期の歴史 で、パラダイムの基本を説明しています。これに基づいて、すべてがオブジェクトとしてモデル化されている純粋な OO 言語 (Smalltalk や Self など) と、OO の概念をサポートしているがパラダイムに完全に準拠していないハイブリッド言語 (PHP など) を後で分けることができます。また、クラスベースとプロトタイプベースの両方の純粋な OO 言語があるため、たとえば、言語が OO であるかどうかは、多重継承の有無によって定義されません。

HTH

于 2012-12-20T12:03:02.297 に答える