JAVA面向对象设计宠物类方式

 更新时间:2024年10月12日 09:32:42   作者:箱子man  
本指南涉及JAVA面向对象的宠物类设计,包括宠物类的父类及其子类小猫类和小狗类,用户可以选择养猫或养狗,给宠物起名字,实现喂食互动,同时宠物具有饱食度和快乐度属性,适合初学者学习面向对象设计

JAVA面向对象设计宠物类

需求:

设计宠物类,用户可以自由选择养猫还是养狗,可以给宠物起名字,还可以实现喂食互动的功能,宠物需要有饱食度和快乐度。

宠物类【父类】

package cn.cxy.exec;
public class Pet {
    String name;
    int full;
    int happy;
    public Pet(String name) {
        this(name, 50, 50);
    }
    public Pet(String name,int full,int happy) { 
        this.name = name;
        this.full = full;
        this.happy = happy;
    }
    public void feed() {//宠物的喂食方法
        if(full == 100) {
            System.out.println(name+"已经吃饱了");
            return;
        }
        System.out.println("给"+name+"喂食");
        full += 10;
        System.out.println("饱食度:"+full);
    }
    public void play() {//宠物的互动玩耍方法
        if(full == 0) {
            System.out.println(name+"已经饿得玩不动了");
            return;
        }
        System.out.println("陪"+name+"玩耍");
        happy += 10;
        full -= 10;
        System.out.println("快乐度:"+happy);
        System.out.println("饱食度:"+full);
    }
    public void punish() {//宠物的惩罚方法
        //子类不同的代码,改成调方法
        System.out.println(
                "打"+name+"的pp,"+name+"哭叫:"+cry());
        happy -= 10;
        System.out.println("快乐度:"+happy);
    }
    public String cry() {//小动物被打哭了
        //无意义代码
        //cry()方法需要在子类中重写,返回具体哭叫声
        return "此处有哭叫声";
    }
}

小猫类【子类】

package cn.cxy.exec;
public class Cat extends Pet{
    public Cat(String name, int full, int happy) {
        super(name, full, happy);
    }
    public Cat(String name) {
        super(name);
    }
    @Override
    public String cry() {
        return "喵~";
    }
}

小狗类【子类】

package cn.cxy.exec;
public class Dog extends Pet {
    public Dog(String name, int full, int happy) {
        super(name, full, happy);
    }
    public Dog(String name) {
        super(name);
    }
    @Override
    public String cry() {
        return "汪~";
    }
}

测试类

package cn.cxy.exec;
 
import java.util.Random;
import java.util.Scanner;
 
public class TestPet {
    public static void main(String[] args) {
        System.out.println("1. 狗");
        System.out.println("2. 猫");
        System.out.print("选择:> ");
        int c = new Scanner(System.in).nextInt();
        System.out.print("给宠物起个名字:");
        String n = new Scanner(System.in).nextLine();
        //定义猫狗变量
        Dog dog = null;
        Cat cat = null;
        if(c == 1) {
            dog = new Dog(n);
            play(dog);
        } else {
            cat = new Cat(n);
            play(cat);
        }
    }
    private static void play(Dog dog) {
        System.out.println("按回车执行");
        while(true) {
            new Scanner(System.in).nextLine();
            int r = new Random().nextInt(6);
            switch(r) {
            case 0: dog.feed(); break;
            case 1: dog.play(); break;
            default: dog.punish(); break;
            }
        }
    }
    private static void play(Cat cat) {
        System.out.println("按回车执行");
        while(true) {
            new Scanner(System.in).nextLine();
            int r = new Random().nextInt(6);
            switch(r) {
            case 0: cat.feed(); break;
            case 1: cat.play(); break;
            default: cat.punish(); break;
            }
        }
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)

    Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)

    这篇文章主要为大家详细介绍了如何利用Java语言实现超大Excel文件解析(XSSF,SXSSF,easyExcel)以及速度的对比,感兴趣的可以了解一下
    2022-07-07
  • SpringBoot中操作Bean的生命周期的方法总结

    SpringBoot中操作Bean的生命周期的方法总结

    在SpringBoot应用中,管理和操作Bean的生命周期是一项关键的任务,这不仅涉及到如何创建和销毁Bean,还包括如何在应用的生命周期中对Bean进行精细控制,本文给大家总结了SpringBoot中操作Bean的生命周期的方法,需要的朋友可以参考下
    2023-12-12
  • Java中的clone()和Cloneable接口实例

    Java中的clone()和Cloneable接口实例

    这篇文章主要介绍了Java中的clone()和Cloneable接口实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java中Maven项目导出jar包配置的示例代码

    Java中Maven项目导出jar包配置的示例代码

    这篇文章主要介绍了Java中Maven项目导出jar包配置的示例代码,需要的朋友可以参考下
    2018-11-11
  • Spring Boot 实现 WebSocket 的代码示例

    Spring Boot 实现 WebSocket 的代码示例

    WebSocket 协议是独立的基于 TCP 协议。它与 HTTP 的唯一关系是,它的握手会被 HTTP 服务器解释为 Upgrade 请求,接下来通过本文给大家介绍Spring Boot 实现 WebSocket 示例详解,需要的朋友可以参考下
    2022-04-04
  • 使用Java代码实现RocketMQ的生产与消费消息

    使用Java代码实现RocketMQ的生产与消费消息

    这篇文章介绍一下其他的小组件以及使用Java代码实现生产者对消息的生成,消费者消费消息等知识点,并通过代码示例介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-07-07
  • Spring的@Lazy懒加载注解用法详细解析

    Spring的@Lazy懒加载注解用法详细解析

    这篇文章主要介绍了Spring的@Lazy懒加载注解用法详细解析,SpringIoC容器会在启动的时候实例化所有单实例 bean ,如果我们想要实现 Spring 在启动的时候延迟加载 bean,即在首次调用bean的时候再去执行初始化,就可以使用 @Lazy 注解来解决这个问题,需要的朋友可以参考下
    2023-11-11
  • 电脑上安装多个JDK版本时该如何自由切换(详细图文)

    电脑上安装多个JDK版本时该如何自由切换(详细图文)

    我们在学习的过程中经常用到不同的jdk版本,那么如何在一台电脑上同时安装多个jdk版本并进行切换呢,这篇文章主要给大家介绍了关于电脑上安装多个JDK版本时该如何自由切换的相关资料,需要的朋友可以参考下
    2023-10-10
  • IDEA感觉不香了AI智能编程工具Cursor使用图文教程

    IDEA感觉不香了AI智能编程工具Cursor使用图文教程

    这篇文章主要介绍了IDEA感觉不香了AI智能编程工具Cursor使用,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • ShardingSphere JDBC强制路由使用的项目实践

    ShardingSphere JDBC强制路由使用的项目实践

    在某些特定场景下,可能需要绕过分片规则直接定位到特定的数据库或表,这种情况下就可以使用HintRouting,本文就来介绍一下ShardingSphere JDBC强制路由使用的项目实践,感兴趣的可以了解一下
    2024-06-06

最新评论