当前位置 : 主页 > 编程语言 > java >

Java引用类型interface的用法总结

来源:互联网 收集:自由互联 发布时间:2023-01-30
目录 interface作为成员变量 法术接口和实现 英雄角色 interface作为方法参数和返回值类型 interface作为成员变量 接口是对方法的封装,对应游戏当中,可以看作是扩展游戏角色的技能。所
目录
  • interface作为成员变量
    • 法术接口和实现
    • 英雄角色
  • interface作为方法参数和返回值类型

    interface作为成员变量

    接口是对方法的封装,对应游戏当中,可以看作是扩展游戏角色的技能。所以,如果想扩展更强大技能,我们在 Role 中,可以增加接口作为成员变量,来设置不同的技能。

    法术接口和实现

    定义接口:

    public interface Skill {
    
        /**
         * 释放技能的抽象方法
         * @param name 英雄
         * @param skillType 技能类型
         */
        void use(String name,String skillType);
    }
    
    public class SkillImpl implements Skill {
        @Override
        public void use(String name,String skillType) {
            System.out.println(name+"使用技能:---》"+skillType);
        }
    }

    英雄角色

    定义角色类:

    public class Hero {
    
        private String name; // 英雄的名称
        private Skill skill; // 英雄的技能
    
        public Hero() {
        }
    
        public Hero(String name, Skill skill) {
            this.name = name;
            this.skill = skill;
        }
    
        public void attack(String name,String skillType) {
            // 调用接口中的抽象方法
            skill.use(name,skillType);
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Skill getSkill() {
            return skill;
        }
    
        public void setSkill(Skill skill) {
            this.skill = skill;
        }
    }

    定义测试类:

    public class DemoGame {
    
        public static void main(String[] args) {
            //创建英雄角色
            Hero hero = new Hero();
            // 设置英雄的名称
            hero.setName("五虎上将关羽"); 
    
            // 设置英雄技能(使用单独定义的实现类)
            //hero.setSkill(new SkillImpl()); 
    
            // 设置英雄技能(同时使用匿名内部类和匿名对象)
            hero.setSkill(new Skill() {
                @Override
                public void use(String name, String skillType) {
                    System.out.println(name+"使用技能:---》"+skillType);
                }
            }); 
    上一篇:Spring零基础入门WebFlux响应式编程
    下一篇:没有了
    网友评论