私はそれについて考えていました、そしていくつかの疑問がありました。
たとえば、インターフェイスを宣言すると、次のようになります。
public interface MyInterface
{
public void method1();
public void method2();
}
これらのインターフェースメソッドは抽象的であると考えられますか?つまり、抽象メソッドの概念は次のとおりです。
抽象メソッドは、宣言されているが実装が含まれていないメソッドです。
それで、これらの方法は抽象的であると考えられるでしょうか?私はabstract
Wordを使用していないので、これらは「純粋な」抽象メソッドではありませんが、概念的にはそうです。
それについて私に何が言えますか?
ありがとう。
インターフェースは「純粋に」抽象的なクラスのようなものです。クラスとそのクラスのallは抽象的です。抽象クラスはメソッドを実装できますが、クラス自体をインスタンス化することはできません(継承および後続のDRYに役立ちます)。
インターフェースの場合、実装はまったくないので、それらは目的に役立ちます:コントラクト。インターフェースを実装する場合は、インターフェースにメソッドを実装する必要があります。
違いは、抽象クラスはメソッドを実装できるのに対し、インターフェースは実装できないことです。
それらが分離している理由は、クラスが複数のインターフェースを実装できるようにするためです。 JavaおよびC#は、クラスを単一の親クラスからの固有のものに制限します。一部の言語では、複数のクラスから継承することができ、「純粋な」抽象クラスを介してインターフェースの作業を実行できます。しかし、多重継承には問題があります、つまり恐ろしい Diamond Problem
私はここで便利な答えを見つけました: http://download.Oracle.com/javase/tutorial/Java/IandI/abstract.html
インターフェース内のすべてのメソッドは暗黙的に抽象的であるため、抽象修飾子はインターフェースメソッドでは使用されません(可能性があります—必ずしも必要ではありません)。
抽象クラスcanには抽象メソッドがあります。
インターフェースのみ可能抽象メソッドがあります。
あなたの例のmethod1()
とmethod2()
は抽象的なメソッドです。