この質問は、Java/C# のインターフェイスを理解しようとする私の努力で尋ねられます。私のプログラマーの友人が私に言ったように、インターフェイスは理解するのが最も簡単な概念の 1 つですが、効果的に使用するのは非常に困難です。反対票を投じようとしている人は、反対票を投じる前に私を正しい方向に導くことを検討してください(私が求めている知識が得られれば、私は気にしません)。
インターフェースがどのように機能するかは理解していますが、その使用法は私には少し曖昧に思えます。
このことを考慮:
public interface Drawable {
public void draw(Graphics g);
}
public class Line implements Drawable {
public void draw(Graphics g) {
. . . // do something---presumably, draw a line
}
. . . // other methods and variables
}
さて、これで何かをするために、私はまだしなければなりません:
Drawable newObject= new line();
私は Drawable タイプを持っていますが、クラスの新しいオブジェクトである line を作成する必要があります。私が間違っている場合は修正してください。私はまだクラスのオブジェクトを作成しています。上記のコードがメモリの最適化のために行われた場合、上記のコードを書いてもメモリを節約するのに役立ちません(メモリよりも抽象化に関連していることはわかっています)。
私の質問は次のとおりです。クラス行に、実装するインターフェイスで指定されたメソッドがある場合、次のことを実行できないのはなぜですか?
public class Line {
public void draw(Graphics g) {
. . . // do something---presumably, draw a line
}
. . . // other methods and variables
}
line newObject= new line();
結局のところ、インターフェイスは基本型を作成する以外に何もしません。私の初心者の理解は次のとおりです。2番目のものはインターフェイスをまったく必要とせず、コードを削減します。
オーバーライドされたメソッドを具象サブクラスに提供する必要があるため、抽象クラスについても同じアプローチを取り、同じことを言うことができます。私の質問は、抽象クラスを必要とせずに具象オブジェクトを宣言して作成しない理由です。
ここで何かが欠けていると確信しています。インターフェイスが便利な理由 私にとっては、実際のクラスによって実際のことが行われるときにコードを追加するだけです。誰か説明してくれませんか?