how2j_interface & inherit
2019-06-28 本文已影响0人
nonviolence
如何设计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("进行了治疗");
}
}
···