デフォルトの方法
ステップ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方法");
}
}