Die Welt von Dragon Ball besteht aus verschiedenen Kriegern wie Goku, Android Cell und Majin Buu. Dieses Mal werden wir einen kleinen Fall entwerfen und implementieren, während wir uns auf diejenigen konzentrieren, die sich von normalen Menschen unterscheiden.
Zusammenfassung häufig verwendeter Artikel
Kriegermerkmale: Kampffunktion → Als Schnittstelle behandeln
Fighter.java
interface Fighter {
void fight();
}
Krieger besitzen die oben genannten Funktionen und haben die folgenden Eigenschaften
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 kann als Unterklasse von Kriegern behandelt werden Fassen Sie die gemeinsamen Gegenstände der Krieger zusammen und unterteilen Sie sie weiter
- Saiyajin (Super Saiyajin unter bestimmten Bedingungen / Affe beim Blick auf den Mond)
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;
}
}
Ich möchte einen Tenkaichi Budokai entwerfen, um Krieger zu bekämpfen
- Feld
Tenkaichi Budokai - Nachdenken über die Beziehung zwischen Kriegern Definieren Sie Konstruktoren und Getter / Setter der Oberklasse
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();
}
}
}
Ausführungsergebnis.java
ora-Goku!
kamehame-ha
oreha-Kuririn!
kien-zan
Es ist voller Sachen, Ich konnte bestätigen, dass Polymorphismus funktioniert
→ Eines Tages
3 Monate Tester → Ich dachte, ich müsste zum Grunddesign gehen und Designmuster lernen Die vollständige Zelle ist ein Singleton-Klassendesign, die Technik ist eine Schnittstelle oder eine abstrakte Klasse und die Kompositionsbeziehung
Jetzt möchte ich anonyme Klassen-> Generika-> Lambda-Ausdrücke und funktionale Schnittstellen-> Stream-API zusammenfassen.