Javaの自己 - インターフェイスは、デフォルトのメソッドを継承します

デフォルトの方法

ステップ1:デフォルトの方法は何ですか

デフォルトの方法はJDK8新機能は、また、具体的な方法を提供することができるインタフェースを参照しますが、前とは違って、唯一の抽象メソッドを提供することができています

モータルこのインタフェースは、追加デフォルトの方法は、この方法は、本体を達成した、として宣言され、復活デフォルト

package charactor;
 
public interface Mortal {
    public void die();
 
    default public void revive() {
        System.out.println("本英雄复活了");
    }
}

ステップ2:なぜ、デフォルトの方法があります

このメカニズムのデフォルトの方法を想定していないので、あなたは、インターフェイスを実装モータルを復活させる新しい方法は、すべてのモータルクラスを追加したい場合は、変更を加える必要があります。

しかし、デフォルトの方法を導入した後、元のクラスは、任意の変更を加える必要がある、ともしません取得するデフォルトの方法を

これにより、新しいクラスの優れた拡張することができ、元のクラスには影響を与えません。

運動デフォルトのメソッド

ADインターフェイスは攻撃のデフォルトの方法を追加したように()
APインタフェースはまた、攻撃のデフォルトの方法()を追加するために
Q:ADを図りつつADAPHeroそれはインタフェースの呼び出し()攻撃である場合、APインタフェースは、ADAPHeroオブジェクト)が(攻撃を呼び出し?

答え

package charactor;
 
public class ADAPHero extends Hero implements AD,AP,Mortal{
 
    @Override
    public void magicAttack() {
        // TODO Auto-generated method stub
         
    }
 
    @Override
    public void physicAttack() {
        // TODO Auto-generated method stub
         
    }
 
    @Override
    public void die() {
        System.out.println(name+ " 这个混合英雄挂了");
    }
 
    //作为同时继承了AD和AP中的 默认方法attack,就必须在实现类中重写该方法
    //从而免去到底调用哪个接口的attack方法这个问题
    @Override
    public void attack() {
        //
        System.out.println("这个ADAPHero自己的attack方法");
    }
 
}

おすすめ

転載: www.cnblogs.com/jeddzd/p/11582187.html