• java——接口作为成员变量类型


    1.创建一个接口

    package cn.itcast.day11.demo07;
    
    public interface Skill {
    
        void use(); // 释放技能的抽象方法
    
    }
    
    
    

    2.创建一个类中的成员变量的数据类型是接口名

    package cn.itcast.day11.demo07;
    
    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() {
            System.out.println("我叫" + name + ",开始施放技能:");
            skill.use(); // 调用接口中的抽象方法
            System.out.println("施放技能完成。");
        }
    
        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;
        }
    }
    
    
    

    3.测试类

    package cn.itcast.day11.demo07;
    
    public class DemoGame {
    
        public static void main(String[] args) {
            Hero hero = new Hero();
            hero.setName("艾希"); // 设置英雄的名称
    
            // 设置英雄技能
    //        hero.setSkill(new SkillImpl()); // 使用单独定义的实现类
    
            // 还可以改成使用匿名内部类
    //        Skill skill = new Skill() {
    //            @Override
    //            public void use() {
    //                System.out.println("Pia~pia~pia~");
    //            }
    //        };
    //        hero.setSkill(skill);
    
            // 进一步简化,同时使用匿名内部类和匿名对象
            hero.setSkill(new Skill() {
                @Override
                public void use() {
                    System.out.println("Biu~Pia~Biu~Pia~");
                }
            });
    
            hero.attack();
        }
    
    }
    
     
  • 相关阅读:
    二、java 与 scala相互调用
    Gradle Tips#1-tasks
    Guice 学习(六)使用Provider注入服务( Provider Inject Service)
    C++第15周(春)项目3
    cocos2d-x3.2中怎样优化Cocos2d-X游戏的内存
    jqGrid源代码分析(一)
    OCP-1Z0-051-题目解析-第6题
    PHP连接sql server 2005环境配置
    【剑指offer】替换字符串中的空格
    android 推断Apk是否签名和 签名是否一致
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/16890887.html
Copyright © 2020-2023  润新知