JavaRush /Java Blog /Random-JA /なぜインターフェースの継承が必要なのでしょうか?
Павел
レベル 11

なぜインターフェースの継承が必要なのでしょうか?

Random-JA グループに公開済み
なぜインターフェースが必要なのでしょうか? なぜインターフェースの継承が必要なのでしょうか? なぜポリモーフィズムが必要なのでしょうか? インターフェイス継承の方法を読んで理解したものの、その理由は理解できなかった人向け。前回は、一般的なイワノフ家の例を使用して、インターフェイスがなぜ必要なのかを見ていきました。私たちは問題を抱えた家族のデジタル化を続けています。すべての人には、誰からも受け継がなかった、または誰にも伝えられなかったいくつかの習慣、つまり個人的な習慣があります。私たちの使命は、家族一人ひとりに独自の習慣を提供することです。Java プレーンに移りましょう。これらのクラスにのみ属するクラスに固有のメソッドを実装する必要があります。さあ、どうぞ!こちらはペティアです。
class Петя implements ПривычкиПапы, ПривычкиМамы {

//это личные Петины привычки
public void ковырятьВНосу () {
System.out.println("Ковырь-ковырь");
    }

//это унаследованные привычки
@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать () {
System.out.println("Поджать губки");
    }
}
こちらはお父さんです:
class Папа implements ПривычкиПапы {

//это личные Папины привычки
public void чесатьБороду () {
System.out.println("Чешу бороду");
    }

//это переданные привычки
   @Override
    public void прихлюпывать() {
     System.out.println("Хлюп");
   }
}
こちらはお母さんです:
class Мама implements ПривычкиМамы{

//это личные Мамины привычки
public void хлопатьРесницами () {
System.out.println("Хлоп-хлоп");
    }

//это переданные привычки
@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
完璧!すべてが正常に機能します。最初の記事で、このプログラムは現実世界を反映していると述べました。現実の最も興味深い特性は、それが常に変化することです。イワノフ家も例外ではなく、マーシャという名の可愛い娘がいました。そして、彼女はお母さんからまつげをたたき、お父さんから鼻をすする習慣を受け継ぎました。プログラムを変更する必要があります。 なぜインターフェースの継承が必要なのでしょうか?  - 1さあ、それはそれほど難しいことではありません。重要なのは論理的に考えることです。結局のところ、インターフェイスが必要な理由は誰もが知っています。次に、インターフェイス Masha's Habitsを作成し、そこにclapElashes()およびsquish()メソッドを記述し、それをMashaに実装して完了です。では、同じ名前のメソッドが他のインターフェイスにすでに実装されている場合はどうなるでしょうか。一度実装すれば済みます。 なぜインターフェースの継承が必要なのでしょうか?  - 2確かに、セリョーザが生まれた場合、イワノフ家がどのような計画を持っているかは誰にも分かりません。セリョーザが生まれた場合、誰が父、母、曾祖父、そして第 4 世代の他の誰かから習慣を継承し、そのたびに次のようなインターフェイスを作成します。他のインターフェイスではすでに何百回も宣言できるメソッドを宣言しますか? 数世代か 3 世代後には、他のインターフェースですでに記述されている多数の同一のメソッドを含むインターフェースを取得する危険性があり、また、何らかの習慣の名前を変更する必要がある場合 (これは十分に可能です - 結局のところ、世界は変化しているのです)では、このスパゲッティをどうやって理解するか、私には想像できません。あとは座って奇跡を夢見るだけだ。 なぜインターフェースの継承が必要なのでしょうか?  - 3さて、それぞれの習慣が独自のインターフェースを持っていたとします。想像してみましょう:
public interface ПривычкаПрихлюпывать {
    public void прихлюпывать();
}
public interface ПривычкаПоджимать {
    public void поджимать();
}
public interface ПривычкаКовырятьВНосу {
    public void ковырятьВНосу();
}
public interface ПривычкаХлопатьРесницами {
    public void хлопатьРесницами();
}
public interface ПривычкаЧесатьБороду {
    public void чесатьБороду();
}
そして、レゴのように、個人の習慣からの複数の継承を使用して、家族の個々のメンバーの習慣に必要なインターフェイスを入力できます。このようなもの:
public interface ПривычкиМамы extends ПривычкаПоджимать, ПривычкаХлопатьРесницами {
    }
public interface ПривычкиПапы extends ПривычкаЧесатьБороду, ПривычкаХлюпать {
    }
public interface ПривычкиПети extends ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу {
    }
public interface ПривычкиМаши extends ПривычкаХлюпать, ПривычкаХлопатьРесницами {
    }
次に、必要なインターフェイスを必要なクラス (たとえば、Mom) に実装するだけです。
class Мама implements ПривычкиМамы{
@Override
public void хлопатьРесницами () {
System.out.println("Хлоп-хлоп");
    }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
パパ、ペティア、マーシャ にも同じことができます。そして、Ivanov ファミリーが拡大すると、習慣に関する問題はなくなり、サラダの材料のように、インターフェイス レベルでの継承を通じて習慣をシャッフルするだけになり、同じ名前のメソッドを大量に生成することはなくなります。ええ、夢、夢... なぜインターフェースの継承が必要なのでしょうか?  - 4描かれた男性は正しいです、これは実際に可能です - これでイワノフ家のシミュレーションが保存されました! 注意深い読者は、「なぜ各ファミリー メンバーにインターフェイスを作成するのでしょうか? 一連のアクションがあるので、それらを必要なクラスに即座に実装します。」と質問するかもしれません。多くの並行世界にPetya の分身が存在し、すべてのPetya がインターフェース Petya's Habitsを実装する必要があると想像してみましょう。
interface ПривычкиПети extends ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу

class ПетяВселеннаяХ implements ПривычкиПети
class ПетяВселеннаяY implements ПривычкиПети
// и т.д.
共通のインターフェースがなかったらどうなるでしょうか?
class ПетяВселеннаяХ implements ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу
class ПетяВселеннаяY implements ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу
// и т.д.
これにより、コードの繰り返しが多くなります。インターフェイスの継承により、アプリケーションの変更がより柔軟になり、特にメソッドの繰り返しに関する問題が解決されます。インターフェースの多重継承が許可されていることに再度注意してください。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION