2018-03-19 在設計LOL的時候,進攻類英雄有兩種,一種是進行物理系攻擊,一種是進行魔法系攻擊。這時候,就可以使用介面來實現這個效果。 介面就像是一種約定,我們約定某些英雄是物理系英雄,那麼他們就一定能夠進行物理。 一、物理攻擊介面 創建一個介面 File->New->Interface A ...
2018-03-19
在設計LOL的時候,進攻類英雄有兩種,一種是進行物理系攻擊,一種是進行魔法系攻擊。這時候,就可以使用介面來實現這個效果。
介面就像是一種約定,我們約定某些英雄是物理系英雄,那麼他們就一定能夠進行物理。
一、物理攻擊介面
創建一個介面 File->New->Interface
AD ,聲明一個方法 physicAttack 物理攻擊,但是沒有方法體,是一個“空”方法
package charactor; public interface AD { //物理傷害 public void physicAttack(); }
二、設計一類英雄,能夠使用物理攻擊
設計一類英雄,能夠使用物理攻擊,這類英雄在LOL中被叫做AD
類:ADHero
繼承了Hero 類,所以繼承了name,hp,armor等屬性
實現某個介面,就相當於承諾了某種約定
所以,實現了AD這個介面,就必須提供AD介面中聲明的方法physicAttack()
實現在語法上使用關鍵字 implements
package charactor; public class ADHero extends Hero implements AD{ @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 physicAttack() { System.out.println("進行物理攻擊"); } }
六、什麼樣的情況下該使用介面?
如上的例子,似乎要介面,不要介面,都一樣的,那麼介面的意義是什麼呢
學習一個知識點,是由淺入深得進行的。 這裡呢,只是引入了介面的概念,要真正理解介面的好處,需要更多的實踐,
以及在較為複雜的系統中進行大量運用之後,才能夠真正理解,比如在學習了多態之後就能進一步加深理解。
剛剛接觸一個概念,就希望達到爐火純青的學習效果,這樣的學習目標是不科學的。