首页 > 编程语言 >Java中关于继承的题目3

Java中关于继承的题目3

时间:2024-09-25 09:36:06浏览次数:1  
标签:题目 name 继承 void int attack health Java public

3.某公司要开发新游戏,请用面向对象的思想,设计游戏中的蛇怪和蜈蚣精 设定
1)蛇怪类:
属性包括:怪物名字,生命值,攻击力
方法包括:攻击,移动(曲线移动),补血(当生命值<10 时,可以补加 20 生命值)
2)蜈蚣精类:
属性包括:怪物名字,生命值,攻击力方法包括:攻击,移动(飞行移动) 要求
1)分析蛇怪和蜈蚣精的公共成员,提取出父类—怪物类
2)利用继承机制,实现蛇怪类和蜈蚣精类
3)攻击方法,描述攻击状态。内容包括怪物名字,生命值,攻击力
4)编写测试类,分别测试蛇怪和蜈蚣精的对象及相关方法
5)定义名为 mon 的包存怪物类,蛇怪类,蜈蚣精类和测试类运行效果

怪物父类

class Monster {
     private String name;
     private int health;
     private int attack;

    public Monster() {

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getHealth() {
        return health;
    }

    public void setHealth(int health) {
        this.health = health;
    }

    public int getAttack() {
        return attack;
    }

    public void setAttack(int attack) {
        this.attack = attack;
    }

    public Monster(String name, int health, int attack) {
        this.name = name;
        this.health = health;
        this.attack = attack;
    }

    //创建一个怪物类的攻击方法
    public void Attack(){
         System.out.println("怪物"+name+"展开攻击"+"\n"+"当前生命值是:"+health+"\n"+"攻击力是:"+attack);
    }

}

蛇精怪类

class Basilisk extends Monster {
    public Basilisk() {   //无参构造
    }

    Basilisk(String name, int health, int attack) { //有参构造
        super(name, health, attack);   //由于父类的变量是私有的,直接获取不到,需要通过调用父类的构造方法进行复制
        super.Attack();              //调用父类的攻击方法
    }

    public void Blood() {          //蛇精的独有方法
        if (getHealth() < 10) {
            setHealth(getHealth() + 20);   //由于父类的变量私有的,子类无法继承,可以通过调用父类的get和set方法对生命值进行修改
            System.out.println("实施大蛇补血术。。。。,当前生命值是:" + getHealth());
        }
    }

    public void Move() {
        System.out.println("我是蛇怪,我走S路线");
    }
}

蜈蚣类

class Centipede extends Monster {
    public Centipede() {
    }

    public Centipede(String name, int health, int attack) {
        super(name, health, attack);
        super.Attack();
    }

    public void Move() {
        System.out.println("我是蜈蚣精,御风飞行");
    }

}

编写测试类,传值进行测试

public class game {
    public static void main(String[] args) {
        Basilisk b1 = new Basilisk("蛇精甲", 5, 20);
        b1.Blood();
        b1.Move();
        System.out.println("===================");
        Centipede c1 = new Centipede("蜈蚣乙", 60, 15);
        c1.Move();

    }
}

标签:题目,name,继承,void,int,attack,health,Java,public
From: https://www.cnblogs.com/ndmtzwdx/p/18430622

相关文章

  • JavaScript (JS)与TypeScript (TS)------讲清楚二者的区别与联系 + 市场主流趋势
    在前端开发中,JavaScript(JS)和TypeScript(TS)都是非常流行的编程语言,它们各自有其优势和适用场景。下面是关于两者的一些对比以及当前的主流趋势:JavaScript(JS)简介:JavaScript是一种广泛使用的脚本语言,主要用于网页上的交互效果。它是一种动态类型、弱类型的语言,语......
  • JAVA基础:IO流,转换流,数据流,数组流
    1IO分类IO流就是一组流动的数据,可以实现数据从一个地方移动到另一个地方IO表示的InputStream和OutputStream,称为输入,输出流。可以实现文件的读写。IO随着关注的特点不同,有不同的分类按照数据流向分类,分为输入流和输出流输入和输出都是以Java程序为基准按......
  • 2.Javaweb-JSP实现数据传递和保存
    Javaweb-JSP实现数据传递和保存文章目录Javaweb-JSP实现数据传递和保存一、get与post区别二、equest对象常用方法三、内置对象--out对象JSP已经准备好的,可以直接使用的对象四、中文乱码JSP中默认使用的字符编码方式:iso-8859-1,不支持中文解决中文乱码参数传递在请求中保......
  • 1.Javaweb-搭建Web环境、初识JSP
    Javaweb-搭建Web环境、初识JSP文章目录Javaweb-搭建Web环境、初识JSP一、pc端程序架构分类:二、web服务器Tomcat三、JSP页面四、脚本语言五、Web程序常见错误六、错误替换JSP九大内置对象(包括JSP四大作用域)JSP四大作用域一、pc端程序架构分类:B/S:浏览器—服务......
  • java中关于继承题目2
    2.请使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息。设定1)出租车类:属性包括:车型,车牌,所属出租公司;方法包括:启动,停止2)家用轿车类:属性包括:车型,车牌,车主姓名;方法包括:启动,停止要求1)分析出租车和家用轿车的公共成员,提取出父类—汽车类2)利用继承机制,实现出租......
  • 关于我学习java的小结09
    一、知识点线程。二、目标理解进程和线程。掌握创建多线程的方式。理解线程的生命周期。掌握死锁。三、内容分析重点多线程的创建方式。线程的生命周期。死锁的形成条件。难点多线程的的理解。死锁。四、内容1、线程1.1什么是进程进程(Proce......
  • java中关于继承的题目1
    编写一个圆类Circle,该类拥有:1)一个成员变量,radius(私有,浮点型);//存放圆的半径;2)两个构造方法Circle() //将半径设为0Circle(double r) //创建Circle对象时将半径初始化为r3)三个成员方法doublegetArea() //获取圆的面积doublegetPerimeter() //获取圆的周长voidshow() //将......
  • javaweb学习2 -2024/9/24
    今天学习了数据库中约束的概念数据库-约束约束的概念约束是作用于表中列上的规则,用于限制加入表的数据约束的存在保证了数据库中数据的正确性,有效性和完整性约束的分类#约束createtableemp2(#自动增长auto_increment当列时数据类型并且唯一约束id......
  • java_day7_继承、final关键字、代码块、多态
    一、继承1、继承我想养一只......
  • java继承中方法的覆盖
    当子类中的方法声明【方法的返回值类型,方法名和参数列表】与父类中的方法声明一致的时候,只是方法的实现不一样,这个现象叫做方法的重写【方法的覆盖】。classFu5{publicvoidfun1(){System.out.println("这是父类中的fun1方法");}}classZi5extendsFu5{......