美文网首页
how2j_interface & inherit

how2j_interface & inherit

作者: nonviolence | 来源:发表于2019-06-28 12:44 被阅读0次

如何设计JAVA的接口

接口就像是一种约定,就好比我们约定某些英雄是物理系英雄,那么他们就一定能够进行物理攻击.

物理攻击接口

创建一个接口 File--New--Interface AD


创建接口
package charactor;

public interface AD { // 创建一个物理攻击的接口
        public void physicAttack(); //声明一个physicAttack的方法,但没有方法体
}

设计一类英雄,能够使用物理攻击

设计一类英雄,能够使用物理攻击,这类英雄在LOL中被叫做AD
类: ADHero
继承了Hero类,所以继承了name,hp,armor等属性

实先了某个接口,就相当于承诺了某种约定

所以,实现了AD这个接口,就必须提供AD接口中声明的方法physicAttack()
实现在语法上使用关键字 implements

package charactor;

public class ADHero extends Hero implementsAD{

        @Override
        public void physicAttack(){
                System.out.println("进行物理攻击")

        }

}


魔法攻击接口

创建接口 :File-->New-->Interface AP
声明一个方法magicAttack魔法攻击,但是没有方法体
是一个空方法

package charactor;
public interface AP {
         public void magicAttack();
}

设计一类英雄,只能够使用魔法攻击

这类英雄在LOL中被叫做AP
类:APHero
继承Hero类,所以继承了name,hp,armor等属性,实现了AP这个接口,就必须提供 AP接口中声明的方法magicAttack()
实现在语法上使用关键词implements

package charactor;
public class APHero extends Hero implements AP{
        @Override
        public void magicAttack(){
                System.out.println("进行了魔法攻击")

        }

}


设计一类英雄,既能够进行物理攻击,又能进行魔法攻击

有一种英雄,能够同时进行物理攻击和魔法攻击,比如伊泽瑞尔,皮城女警凯特琳

package charactor;

// 能够同时进行物理和魔法伤害的英雄

public  class ADAPHero extends  Hero implements AD,AP{
        @Override
        public  void magicAttack(){
                System.out.println("进行魔法攻击")
        }
        @Override
        public void phyicAttack(){
                System.out.println("进行物理攻击");

        }

}

什么情况下使用该接口

如上的例子,似乎要接口,不要接口,都一样的,那么接口的意义是什么呢

学习一个知识点,是由浅入深得进行的。 这里呢,只是引入了接口的概念,要真正理解接口的好处,需要更多的实践,以及在较为复杂的系统中进行大量运用之后,才能够真正理解,比如在学习了多态之后就能进一步加深理解。

刚刚接触一个概念,就希望达到炉火纯青的学习效果,这样的学习目标是不科学的。

练习_接口

设计一个治疗者接口:Healer
该接口声明有方法:heal()
设计一个Support类,代表辅助英雄,继承Hero类,同时实现了Healer这个接口


// 创建接口  File-->New-->Interface Healer
package charactor;

public interface Healer{
        public void heal(); // 接口中声明一个治疗方法

}

package charactor;

public class Support extends Hero inplements Healer {
        @Override
        public void heal(){
                System.out.println("进行了治疗");

        }


}



···


























相关文章

网友评论

      本文标题:how2j_interface & inherit

      本文链接:https://www.haomeiwen.com/subject/ehyscctx.html