JAVA项目----宠物小精灵11.24

public interface DisplayItem {

    /**
     * 获取物品的信息
     * @return
     */
    String getItemInformation(); 


}

总的定义一个接口,返回所有物品的展示的信息。

接口里面是方法;(没有返回值)

如果实现这个接口的话,我们都要实现这个结构的方法。

-------------------------------------------------------------------------------------------------------------------------------

public abstract class Item implements DisplayItem {

    /**
     * 物品的名称
     */
    protected String name;

    /**
     * 关卡的编号
     */
    protected int levelNumber;

    protected boolean discovery;  //”发现“


    public Item(String name){
        this.name = name;
    }

    public Item(String name, int levelNumber) {
        this.name = name;
        this.levelNumber = levelNumber;
    }

    public void setDiscovery(boolean discovery){
        this.discovery = discovery;
    }

}

实现接口的类必须实现接口中声明的所有方法。

我的Item类是一个抽象类,他继承的DisplayItem接口,抽象类里面有构造方法,接口没有

------------------------------------------------------------------------------------------------------------------------------


/**
 * 怪物
 */

public class Monster extends Item{

    public Monster(String name) {
        super(name);
    }

    public Monster(String name, int levelNumber) {
        super(name, levelNumber);
    }




    @Override
    public String getItemInformation() {

        return discovery ? name:"■";

    }
}

Monster类他是继承这一个大类”Item“,子类会继承父类中所有的公开的和受保护的成员(成员变量和构造方法

然后呢就是Monster类自己重载getItemInformation的方法,这里想一想什么叫三元运算符

------------------------------------------------------------------------------------------------------------------------------

/**
 * 传送门
 */


public class Portal extends Item{

    private boolean next;    //属于传送门的私有方法

    public Portal(boolean next) {
        super("传送门");
        this.next = next;
    }

    public Portal(String name, int levelNumber) {
        super(name, levelNumber);
    }


    @Override
    public String getItemInformation() {
        if(discovery) {
            return next ? "→" : "←";
        }
        return "■";
    }


}

继承之后还可能有属于自己的成员变量,并且构造方法呢也不是和父类一模一样

//举个例子
super("传送门");

------------------------------------------------------------------------------------------------------------------------------


public class Treasure extends Item {

  public Treasure(int levelNumber) {
        super("宝箱", levelNumber);
    }

    /**
     * 宝箱
     */

    @Override
    public String getItemInformation() {
        return discovery ?  "۞" : "■" ;
    }
}

这个也是同理!!和上面

package com.cyx.pokemon.Item;

public class HP extends Item {

    private int count;

    public HP(int levelNumber,int count) {
        super("天山雪莲", levelNumber);   //可以直接用super赋值——》天山雪莲
        this.count = count;

    }

    /**
     * 使用药品可以回复血量
     * @return
     */

    public int use (){
        count--;
       // if (count == 0) return -1;
        return 500*levelNumber;

    }

    /**
     * 检测药品是否可以从背包中销毁
     * @return
     */

    public boolean canDestroy(){
        return count == 0;
    }

    @Override
    public String getItemInformation() {
        return name;
    }
}

使用一个物品,count--   调用一次use方法少一个count,然后返还一个对应的值 

=========================================================================

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值