1. Klasse als Mitgliedsvariable
Beim Definieren einer Klassenrolle (Spielfigur) ist der Code wie folgt:
Verwenden Sie den Typ int, um die Zeichen-ID und den Gesundheitswert darzustellen, und verwenden Sie den Typ String, um den Namen darzustellen. Zu diesem Zeitpunkt ist String selbst ein Referenztyp, da er wie eine Konstante verwendet wird und seine Existenz als Referenztyp häufig ignoriert wird. Wenn wir die Definition dieser Klasse weiter bereichern und der Rolle Attribute wie Ausrüstung zuweisen, wie werden wir sie dann schreiben?
Empfohlene kostenlose Video-Tutorials: Kostenlose Java-Video-Tutorials
Waffenklassen definieren, die die Angriffsfähigkeiten erhöhen:
Definieren Sie die zu tragende Rüstungsklasse, die die Verteidigungsfähigkeit erhöht, also den Gesundheitswert erhöht:
Definieren Sie die Charakterklasse:
Testklasse:
public class Test { public static void main(String[] args) { // 创建Weapon 对象 Weapon wp = new Weapon("屠龙刀", 999999); // 创建Armour 对象 Armour ar = new Armour("麒麟甲", 10000); // 创建Role 对象 Role r = new Role(); // 设置武器属性 r.setWeapon(wp); // 设置盔甲属性 r.setArmour(ar); // 攻 击 r.attack(); // 穿戴盔甲 r.wear(); } } 输出结果: 使用屠龙刀,造成999999点伤害 穿上麒麟甲 ,生命值增加10000
Tipp: Wenn eine Klasse als Mitgliedsvariable verwendet wird, bedeutet die Zuweisung eines Werts, ihr tatsächlich ein Objekt der Klasse zuzuweisen.
2. Schnittstelle als Mitgliedsvariable
Schnittstelle ist eine Kapselung von Methoden, die dem Spiel entsprechen und betrachtet werden können als erweiterte Fähigkeiten des Spielcharakters. Wenn wir leistungsfähigere Fähigkeiten erweitern möchten, können wir daher Schnittstellen als Mitgliedsvariablen in der Rolle hinzufügen, um unterschiedliche Fähigkeiten festzulegen.
Schnittstelle definieren:
Rollenklasse definieren:
Testklasse definieren:
public class Test { public static void main(String[] args) { // 创建游戏角色 Role role = new Role(); // 设置角色法术技能 role.setFaShuSkill(new FaShuSkill() { @Override public void faShuAttack() { System.out.println("纵横天下"); } }); // 发动法术攻击 role.faShuSkillAttack(); // 更换技能 role.setFaShuSkill(new FaShuSkill() { @Override public void faShuAttack() { System.out.println("逆转乾坤"); } }); // 发动法术攻击 role.faShuSkillAttack(); } } 输出结果: 发动法术攻击:纵横天下攻击完毕 发动法术攻击:逆转乾坤攻击完毕
Tipp: Wir verwenden eine Schnittstelle als Mitgliedsvariable, um Fähigkeiten jederzeit zu ändern. Dieses Design ist flexibler und verbessert die Erweiterung der Programm. Sex. Wenn eine Schnittstelle als Mitgliedsvariable verwendet wird, bedeutet die Zuweisung eines Werts, ihr tatsächlich ein Unterklassenobjekt der Schnittstelle zuzuweisen.
3. Schnittstelle als Methodenparameter und Rückgabewerttyp
Was muss übergeben werden, wenn die Schnittstelle als Methodenparameter verwendet wird? Was muss zurückgegeben werden, wenn eine Schnittstelle als Rückgabewerttyp einer Methode verwendet wird? Ja, tatsächlich sind sie alle Unterklassenobjekte davon.
Die ArrayList-Klasse ist uns nicht unbekannt. Wenn wir uns die API ansehen, stellen wir fest, dass es sich tatsächlich um eine Implementierungsklasse der java.util.List
-Schnittstelle handelt. Wenn wir also die List-Schnittstelle als Parameter oder Rückgabewerttyp betrachten, können wir natürlich ein ArrayList-Objekt übergeben oder zurückgeben.
Bitte beachten Sie die folgende Methode: Holen Sie sich alle geraden Zahlen in einem Satz.
Methode definieren:
public static List<Integer> getEvenNum(List<Integer> list) { // 创建保存偶数的集合 ArrayList<Integer> evenList = new ArrayList<>(); // 遍历集合list,判断元素为偶数,就添加到evenList中 for (int i = 0; i < list.size(); i++) { Integer integer = list.get(i); if (integer % 2 == 0) { evenList.add(integer); } } /* 返回偶数集合因为getEvenNum方法的返回值类型是List,而ArrayList是List的子类, 所以evenList可以返回 */ return evenList; }
Methode aufrufen:
Tipp: Wenn die Schnittstelle verwendet wird Übergeben Sie als Parameter das Unterklassenobjekt. Wenn eine Schnittstelle als Rückgabewerttyp verwendet wird, wird ihr Unterklassenobjekt zurückgegeben.
Empfohlene Java-bezogene Artikel und Tutorials: Java-Einführungs-Tutorial
Das obige ist der detaillierte Inhalt vonZusammenfassung der Verwendung von Referenztypen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!