为什么抽象类的方法的访问修饰符可以是public和protected,而接口的方法的访问修饰符只能是public?
或者说,
接口的方法的访问修饰符为什么不能是protected?
PHPz2017-04-17 17:34:01
個人的な推測:
言語設計者は、これによりインターフェイス アクセス モデルが複雑になると感じるかもしれません。
インターフェイスの実装を担当するクラスにとって、実装とインターフェイスが同じパッケージにない場合、保護されたメソッドを実装する必要がありますか?
以下で 2 つの例を使用して説明します。最初の例では、保護されたインターフェイス メソッドが意味をなさないように感じられます。もう一つは考えさせられますが、まったく意味がありません。
たとえば、パッケージ sample.interface
の下に ISomething
があります。
次のケースは奇妙です。
リーリーさらに意味がわかりません:
リーリーこのようにして、クラスの実装とインターフェースが 1 つのパッケージの下に置かれます。これは一体どういうことなのでしょうか? 複数のインターフェイスを実装する必要があるかもしれませんが、それらを個別に実装することはできません。 。 。
阿神2017-04-17 17:34:01
インターフェイスは、システム アーキテクチャの設計方法においてより重要な役割を果たし、主にモジュール間の通信コントラクトを定義するために使用されます。
抽象クラスはコード実装で役割を果たし、主にコードの再利用を実現するために使用されます。
高洛峰2017-04-17 17:34:01
抽象とインターフェイスは異なる状況で使用されます。前者はパラメータの継承を前提にオーバーライドされますが、ターゲットはその直接または間接の親クラスであり、保護されたアクセス許可が許可されます。インターフェイスは通常、リスナーなどの別のクラスのコールバックに使用されます。保護されたアクセス許可がある場合、リスナー インスタンスを取得したとしても、そのメソッドを取得できないため、コールバック自体は意味がありません。
少し個人的な意見です、間違いがあればご指摘ください
迷茫2017-04-17 17:34:01
インターフェースとは何ですか?インターフェースはinterfaceと書かれており、外部とのやり取りに使用されますが、protectedと書くとどうやって外部とやり取りできるのでしょうか?
インターフェイスは、渡されたオブジェクトが特定のメソッドを実装する必要があることを規定するために使用されます。実装されたメソッドを呼び出すことができない場合、この規定にはどのような意味があるのでしょうか?何を着ても対象は同じなので、どちらとも言えません。
天蓬老师2017-04-17 17:34:01
インターフェイスは実装のためのものであり、継承関係や近親者ではありません。通貨マネー = 1^n の場合、彼にお金の分け前を与えることはできず、彼はそれを楽しむことができません。
プロテクトは継承されたサブクラスに表示されます。それがあなた自身の場合は、すべてのお金を彼に継承するだけです。
インターフェイスが保護するように設定されている場合、それは愛人または愛人のいずれかであり、これは違法です。