Le monde de Dragon Ball est composé de divers guerriers tels que Goku, Android Cell et Majin Buu. Cette fois, nous allons concevoir et mettre en œuvre un petit cas tout en nous concentrant sur ceux qui sont différents des gens ordinaires.
Résumé des éléments fréquemment utilisés
Caractéristiques du guerrier: Fonction de combat → Traiter comme une interface
Fighter.java
interface Fighter {
void fight();
}
Les guerriers possèdent les fonctions ci-dessus et ont les caractéristiques suivantes
DragonballWarrior.java
public class DragonballWarrior implements Fighter {
private String name;
private int property;
private int HP;
@Override
public void fight() {
}
public void getSkill() {
}
public void doSkill() {
}
}
Goku peut être traité comme une sous-classe de guerriers Résumez les objets communs des guerriers et subdivisez-les davantage
- Saiyan (Super Saiyan sous certaines conditions / Singe en regardant la lune)
Saiyan.java
public class Saiyan extends DragonballWarrior {
/** [1:normal / 2:monkey / 3:super-saiyan] */
private int status;
public void changeStatus(Saiyan saiyan) {
this.status = saiyan.status;
}
}
Je veux concevoir un Tenkaichi Budokai pour combattre les guerriers
- Champ
Tenkaichi Budokai-Réflexion sur la relation has-a des guerriers Définir les constructeurs et les getters / setters de superclasse
DragonballWarrior.java
public class DragonballWarrior implements Fighter {
private String name;
private int property;
private int HP;
/** default constractor */
DragonballWarrior() {
}
DragonballWarrior(String name, int property, int HP) {
this.name = name;
this.property = property;
this.HP = HP;
}
@Override
public void fight() {
}
public void getSkill() {
}
public void doSkill() {
}
// S - getter,setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getProperty() {
return property;
}
public void setProperty(int property) {
this.property = property;
}
public int getHP() {
return HP;
}
public void setHP(int hP) {
HP = hP;
}
// E - getter,setter
}
Saiyan.java
public class Saiyan extends DragonballWarrior {
/** [1:normal / 2:monkey / 3:super-saiyan] */
private int status = 0;
public Saiyan(String name, int property, int HP) {
super(name, property, HP);
}
public void changeStatus(Saiyan saiyan) {
this.status = saiyan.status;
}
@Override
public void doSkill() {
if (super.getName().equals("Goku")) {
System.out.println("kamehame-ha");
}
}
@Override
public void fight() {
if (super.getName().equals("Goku")) {
System.out.println("ora-Goku!");
}
}
Saiyan.java
public class MartialArtist extends DragonballWarrior {
public MartialArtist(String name, int property, int HP) {
super(name, property, HP);
}
@Override
public void doSkill() {
if (super.getName().equals("Kuririn")) {
System.out.println("kien-zan");
}
}
@Override
public void fight() {
if (super.getName().equals("Kuririn")) {
System.out.println("oreha-Kuririn!");
}
}
}
BattleTournament.java
public class BattleTournament {
private List<DragonballWarrior> dwlist;
public static void main(String args[]) {
List<DragonballWarrior> dwlist = new ArrayList<>();
dwlist.add(new Saiyan("Goku", 50000, 200));
dwlist.add(new Saiyan("Vegeta", 40000, 250));
dwlist.add(new MartialArtist("Kuririn", 3000, 80));
dwlist.add(new MartialArtist("Kamesennin", 3000, 80));
for (DragonballWarrior dw : dwlist) {
dw.fight();
dw.doSkill();
}
}
}
Résultat d'exécution.java
ora-Goku!
kamehame-ha
oreha-Kuririn!
kien-zan
C'est plein de trucs, J'ai pu confirmer que le polymorphisme fonctionne
→ Un jour
3 mois de testeur → Je pensais que je devais passer au design de base et apprendre les modèles de conception La cellule complète est une conception de classe singleton, la technique est une interface ou une classe abstraite et la relation de composition
Maintenant, je voudrais résumer les classes anonymes-> génériques-> expressions lambda et interfaces fonctionnelles-> Stream API.