(免責事項abstract class
:これはesとsの違いを理解することについての質問ではありませんinterface
。それがわからない場合は、タイトルをもう一度読んでください。私は契約と半分実装されたサブシステムの違いに精通しています。)
ほんの一例としてJavaを取り上げましょう。interface
開発者としての私の観点から、コンパイラがまったく同じものを吐き出すとき、明確なキーワードの必要性はほとんどないようです。人間の言葉で言えば、「(implements
またはを介してextends
)派生するまでこれを利用することはできません。そのメソッドを実装する新しいクラス」。単純。
しかし、これら2つの混同を防ぐ可能性のあるシナリオが1つあります。Javaでは多重継承が許可されていないため(esの場合) 、implement
複数の継承が必要な場合。確かに、コンパイラがメソッド本体または宣言された変数があることを認識し、その後、必要に応じてマルチ/を禁止するような方法で言語を構築するのは簡単です。次に、優先順位に問題がありますか?interface
class
implements
extends
これが、この構文上の違いがある唯一の理由ですか?
PS私がこの質問をする理由の1つは、このシナリオは新しいOOプログラマーにとって理解するのにかなりの課題を提示する可能性があることです。これを言語レベルでより合理化された方法で処理すると、概念の違いをより迅速に把握するのに大いに役立つと思います。 。