1. 멤버 변수로 클래스
클래스 Role(게임 캐릭터) 정의 시 코드는 다음과 같습니다.
int 타입을 사용하여 캐릭터 ID와 체력 값을 표현합니다. , 그리고 String 유형을 사용하여 이름을 나타냅니다. 이때 String 자체는 참조형으로서 상수처럼 사용되기 때문에 참조형으로서의 존재가 무시되는 경우가 많다. 계속해서 이 클래스의 정의를 풍부하게 하고 장비와 같은 역할 속성을 부여한다면 어떻게 작성할까요?
추천 무료 비디오 튜토리얼: java 무료 비디오 튜토리얼
공격 능력을 증가시키는 무기 클래스 정의:
방어 능력을 증가시키는 착용 갑옷 클래스를 정의합니다. 상태 값:
역할 클래스 정의:
테스트 클래스:
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
팁: 클래스가 멤버 변수로 사용될 때 값을 할당하는 것은 실제로 클래스의 개체를 할당하는 것입니다. .
2. 멤버 변수로서의 인터페이스
인터페이스는 해당 게임에서 메소드의 캡슐화라고 볼 수 있습니다. 따라서 더욱 강력한 스킬을 확장하고 싶다면 Role에 멤버 변수로 인터페이스를 추가해 다양한 스킬을 설정할 수 있습니다.
인터페이스 정의:
캐릭터 클래스 정의:
테스트 클래스 정의:
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(); } } 输出结果: 发动法术攻击:纵横天下攻击完毕 发动法术攻击:逆转乾坤攻击完毕
팁: 인터페이스를 멤버 변수로 사용하여 언제든지 스킬을 변경할 수 있습니다. 이번에는 이렇게 디자인이 더욱 유연해지고 프로그램의 확장성이 높아졌습니다. 인터페이스가 멤버 변수로 사용될 때 값을 할당하는 것은 실제로 인터페이스의 하위 클래스 개체를 할당하는 것입니다.
3. 메소드 매개변수로 인터페이스하고 반환값 유형
인터페이스를 메소드 매개변수로 사용할 때 무엇을 전달해야 하나요? 인터페이스가 메소드의 반환 값 유형으로 사용될 때 무엇을 반환해야 합니까? 예, 사실, 그것들은 모두 그것의 하위 클래스 객체입니다.
ArrayList 클래스가 낯설지 않습니다. API를 살펴보면 실제로 java.util.List
인터페이스의 구현 클래스라는 것을 알 수 있습니다. 따라서 List 인터페이스를 매개변수 또는 반환 값 유형으로 볼 때 물론 ArrayList 객체를 전달하거나 반환할 수 있습니다.
다음 방법을 준수하세요. 모든 짝수를 한 세트로 가져옵니다.
메서드 정의:
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; }
Call 메서드:
팁: 인터페이스가 매개변수로 사용되는 경우 해당 하위 클래스 개체를 전달하세요. 인터페이스가 반환 값 유형으로 사용되면 해당 하위 클래스 객체가 반환됩니다.
Java 관련 기사 및 튜토리얼 추천: Java 입문 튜토리얼
위 내용은 Java의 참조 유형 사용법 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!