如何設(shè)計(jì)JAVA的接口
接口就像是一種約定,就好比我們約定某些英雄是物理系英雄,那么他們就一定能夠進(jìn)行物理攻擊.
物理攻擊接口
創(chuàng)建一個(gè)接口 File--New--Interface AD
package charactor;
public interface AD { // 創(chuàng)建一個(gè)物理攻擊的接口
public void physicAttack(); //聲明一個(gè)physicAttack的方法,但沒(méi)有方法體
}
設(shè)計(jì)一類(lèi)英雄,能夠使用物理攻擊
設(shè)計(jì)一類(lèi)英雄,能夠使用物理攻擊,這類(lèi)英雄在LOL中被叫做AD
類(lèi): ADHero
繼承了Hero類(lèi),所以繼承了name,hp,armor等屬性
實(shí)先了某個(gè)接口,就相當(dāng)于承諾了某種約定
所以,實(shí)現(xiàn)了AD這個(gè)接口,就必須提供AD接口中聲明的方法physicAttack()
實(shí)現(xiàn)在語(yǔ)法上使用關(guān)鍵字 implements
package charactor;
public class ADHero extends Hero implementsAD{
@Override
public void physicAttack(){
System.out.println("進(jìn)行物理攻擊")
}
}
魔法攻擊接口
創(chuàng)建接口 :File-->New-->Interface AP
聲明一個(gè)方法magicAttack魔法攻擊哑梳,但是沒(méi)有方法體
是一個(gè)空方法
package charactor;
public interface AP {
public void magicAttack();
}
設(shè)計(jì)一類(lèi)英雄,只能夠使用魔法攻擊
這類(lèi)英雄在LOL中被叫做AP
類(lèi):APHero
繼承Hero類(lèi)绿贞,所以繼承了name太颤,hp佃乘,armor等屬性第股,實(shí)現(xiàn)了AP這個(gè)接口,就必須提供 AP接口中聲明的方法magicAttack()
實(shí)現(xiàn)在語(yǔ)法上使用關(guān)鍵詞implements
package charactor;
public class APHero extends Hero implements AP{
@Override
public void magicAttack(){
System.out.println("進(jìn)行了魔法攻擊")
}
}
設(shè)計(jì)一類(lèi)英雄,既能夠進(jìn)行物理攻擊,又能進(jìn)行魔法攻擊
有一種英雄躲因,能夠同時(shí)進(jìn)行物理攻擊和魔法攻擊晌区,比如伊澤瑞爾,皮城女警凱特琳
package charactor;
// 能夠同時(shí)進(jìn)行物理和魔法傷害的英雄
public class ADAPHero extends Hero implements AD,AP{
@Override
public void magicAttack(){
System.out.println("進(jìn)行魔法攻擊")
}
@Override
public void phyicAttack(){
System.out.println("進(jìn)行物理攻擊");
}
}
什么情況下使用該接口
如上的例子屁置,似乎要接口焊夸,不要接口,都一樣的蓝角,那么接口的意義是什么呢
學(xué)習(xí)一個(gè)知識(shí)點(diǎn)阱穗,是由淺入深得進(jìn)行的。 這里呢使鹅,只是引入了接口的概念揪阶,要真正理解接口的好處,需要更多的實(shí)踐患朱,以及在較為復(fù)雜的系統(tǒng)中進(jìn)行大量運(yùn)用之后鲁僚,才能夠真正理解,比如在學(xué)習(xí)了多態(tài)之后就能進(jìn)一步加深理解裁厅。
剛剛接觸一個(gè)概念冰沙,就希望達(dá)到爐火純青的學(xué)習(xí)效果,這樣的學(xué)習(xí)目標(biāo)是不科學(xué)的执虹。
練習(xí)_接口
設(shè)計(jì)一個(gè)治療者接口:Healer
該接口聲明有方法:heal()
設(shè)計(jì)一個(gè)Support類(lèi)拓挥,代表輔助英雄,繼承Hero類(lèi)袋励,同時(shí)實(shí)現(xiàn)了Healer這個(gè)接口
// 創(chuàng)建接口 File-->New-->Interface Healer
package charactor;
public interface Healer{
public void heal(); // 接口中聲明一個(gè)治療方法
}
package charactor;
public class Support extends Hero inplements Healer {
@Override
public void heal(){
System.out.println("進(jìn)行了治療");
}
}
···