PTA-6-48 使用面向对象的思想编写程序描述动物

题目:

使用面向对象的思想编写程序描述动物,说明:

(1) 分析兔子和青蛙的共性,定义抽象的动物类,拥有一些动物共有的属性:名字、颜色、类别(哺乳类、非哺乳类),以及共有的行为:吃东西,发出叫声。

(2)定义一些特殊能力做为接口,例如游泳,飞翔。

(3)定义三种动物:兔子继承动物类;根据青蛙会游泳,因此继承动物同时实现游泳接口;老鹰会飞,因此继承动物同时实现飞翔接口。

(4)设计测试类,调用子类所覆写的这些抽象方法。

已有的抽象类定义如下:

abstract class Animal{   //动物类
    private String name;//名字
    private String color;//颜色
    private String type;//类别(哺乳类、非哺乳类) 
    public Animal(String name, String color, String type){       
        this.name = name;
        this.color = color;
        this.type = type;
    }
    public String getName(){
        return name;
    }  
    public String getColor(){
        return color;
    }   
    public String getType(){
        return type;
    }     
    public abstract void shout();   
    public abstract void eat();
}

需要编写两个接口体现特殊能力:

(1)定义一个游泳的接口Swimmable,在此接口中有抽象方法swim()。

(2)定义一个游泳的接口Flyable,在此接口中有抽象方法fly()。

需要编写三个子类兔子、青蛙和老鹰:

(1) 定义一个子类Rabbit,兔子不会飞也不会游泳,继承动物类,并覆写shout()和eat()方法。

(2) 定义一个子类Frog,青蛙不会飞但会游泳,继承动物类并实现接口Swimmable,并覆写shout()、eat()方法和swim()方法。

(3) 定义一个子类Eagle,老鹰会飞但不会游泳,继承动物类并实现接口Flyable,并覆写shout()、eat()方法和fly()方法。

已有的Main类定义

/* 请在这里填写答案 */

public class Main{
    public static void main(String[] args) {
        AnimalAction(new Rabbit("小白", "白色", "哺乳类"));      
        System.out.println("====================");
        AnimalAction(new Frog("弗洛格", "绿色", "非哺乳类"));
        SwimAction(new Frog("弗洛格", "绿色", "非哺乳类"));
        System.out.println("====================");
        AnimalAction(new Eagle("凤头鹰","灰色","非哺乳类"));
        FlyAction(new Eagle("凤头鹰","灰色","非哺乳类"));
    }
    public static void AnimalAction(Animal an) {
        an.shout();
        an.eat();
    }
    public static void SwimAction(Swimmable s) {
        s.swim();
    }
    public static void FlyAction(Flyable f) {
        f.fly();
    }
}


根据题目要求,代码实现如下:

interface Swimmable {
    abstract void swim();
}

interface Flyable {
    abstract void fly();
}
class Rabbit extends Animal {
    public Rabbit(String name, String color, String type) {
        super(name, color, type);
    }
    @Override
    public void shout() {
        System.out.println("那只"+super.getColor()+"的,名字叫"+super.getName()
            +"的兔子正在叽叽的叫");
    }
    @Override
    public void eat() {
        System.out.println("兔子是哺乳类,爱吃胡萝卜");
    }
}

class Frog extends Animal implements Swimmable {
    public Frog(String name, String color, String type) {
        super(name, color, type);
    }
    @Override
    public void shout() {
        System.out.println("那只"+super.getColor()+"的,名字叫"+super.getName()
                +"的青蛙正在呱呱的叫");
    }
    @Override
    public void eat() {
        System.out.println("青蛙是非哺乳类,爱吃昆虫");
    }

    @Override
    public void swim() {
        System.out.println("青蛙是游泳高手");
    }
}
class Eagle extends Animal implements Flyable {
    public Eagle(String name, String color, String type) {
        super(name, color, type);
    }
    @Override
    public void shout() {
        System.out.println("那只"+super.getColor()+"的,名字叫"+super.getName()
                +"的老鹰正在啾啾的叫");
    }
    @Override
    public void eat() {
        System.out.println("老鹰是非哺乳类,爱吃小鸡");
    }

    @Override
    public void fly() {
        System.out.println("老鹰是飞翔高手");
    }
}

以上就是 PTA-6-48 使用面向对象的思想编写程序描述动物 的全部内容了,希望能对你有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/197733.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis 事件轮询

1 Redis 为什么快 数据存在内存中, 直接操作内存中的数据单线程处理业务请求避免了多线的上下文切换, 锁竞争等弊端使用 IO 多路复用支撑更高的网络请求使用事件驱动模型, 通过事件通知模式, 减少不必要的等待… 这些都是 Redis 快的原因。 但是这些到了代码层面是如何实现的呢…

出纳常用的月报表,熬夜做了这8份直接用!

做出纳,公司财务的日报表是必不可少的,收支了多少,支出了多少,这些都是要记录下来的! 一份出纳日报表通常包含以下内容: 1. 日期:报告涵盖的具体日期,标明是哪一天的财务数据。 2. 收…

【论文阅读】An Experimental Survey of Missing Data Imputation Algorithms

论文地址:An Experimental Survey of Missing Data Imputation Algorithms | IEEE Journals & Magazine | IEEE Xplore 处理缺失数据最简单的方法就是是丢弃缺失值的样本,但这会使得数据更加不完整并且导致偏差或影响结果的代表性。因此,…

bash编程 数组和for循环的应用

bash编程 数组和for循环的应用 1、问题背景2、bash 定义数组3、for循环遍历输出数组所有元素4、编写bash脚本输出每个端口是否在监听状态 1、问题背景 linux服务器开机后,需要检查一组端口是否在监听,以便判断这些端口对应的服务是否在运行。可以考虑使…

别再让假的fiddler教程毒害你了,来看这套最全最新的fiddler全工具讲解

fiddler界面工具栏介绍 添加图片注释,不超过 140 字(可选) (1)WinConfig:windows 使用了一种叫做“AppContainer”的隔离技术,使得一些流量无法正常捕获,在 fiddler中点击 WinConfig…

轻巧高效的剃须好工具,DOCO黑刃电动剃须刀上手

剃须刀大家都用过,我比较喜欢电动剃须刀,尤其是多刀头的悬浮剃须刀,感觉用起来很方便,剃须效率也很高。最近我在用一款DOCO小蔻的黑刃电动剃须刀,这款剃须刀轻巧易用,而且性价比超高。 相比于同类产品&…

深度盘点:100 个 Python 数据分析函数总结

经过一段时间的整理,本期将分享我认为比较常用的100个实用函数,这些函数大致可以分为六类,分别是统计汇总函数、数据清洗函数、数据筛选、绘图与元素级运算函数、时间序列函数和其他函数。 技术交流 技术要学会交流、分享,不建议…

两个mongo表,A和B,以A中的_id记录的为准, 删掉B表中A表中没有的记录

可以使用 MongoDB 的聚合管道和 $lookup 操作符来实现这个需求。以下是一个示例的查询语句,假设集合 A 和集合 B 分别对应表 A 和表 B: db.B.aggregate([{$lookup: {from: "A",localField: "_id",foreignField:

单片机复位电路

有时候我们的代码会跑飞,这个时候基本上是一切推到重来.”推倒重来”在计算机术语上称为复位.复位需要硬件的支持,复位电路就是在单片机的复位管脚上产生一个信号,俗称复位信号.这个信号需要持续一定的时间,单片机收到该信号之后就会复位,从头执行。 复位原理: 那么…

【工业智能】Solutions

各类问题对应的解决方案 工艺参数推荐APC 排产调度智能算法强化学习 运筹优化空压机群控 预测 工艺参数推荐 APC 排产调度 智能算法 遗传算法 强化学习 DDQN 运筹优化 空压机群控 MIP混合整数规划 能耗优化 预测 电池容量预测 时序预测,回归预测 点击剩余…

【Vue】Vue3 配置全局 scss 变量

variables.scss $color: #0c8ce9;vite.config.ts // 全局css变量css: {preprocessorOptions: {scss: {additionalData: import "/styles/variables.scss";,},},},.vue 文件使用

创建一个带有背景图层和前景图层的渲染窗口

开发环境: Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example demo解决问题: 创建一个带有背景图层和前景图层的渲染窗口,知识点:1. 画布转image;2. 渲染图层设置;3.…

.NET生成微信小程序推广二维码

前言 对于小程序大家可能都非常熟悉了,随着小程序的不断普及越来越多的公司都开始推广使用起来了。今天接到一个需求就是生成小程序码,并且与运营给的推广图片合并在一起做成一张漂亮美观的推广二维码,扫码这种二维码就可以进入小程序。为了…

Python二叉树用法介绍

更多资料获取 📚 个人网站:ipengtao.com 二叉树是一种常见的数据结构,具有树形结构,每个节点最多有两个子节点。Python中有多种方式来表示和操作二叉树,本文将介绍二叉树的基本概念、构建、遍历和一些常见操作&#x…

Opencv-C++笔记 (19) : 分水岭图像分割

文章目录 一、基于距离变换与分水岭的图像分割1、图像分割2、距离和变换与分水岭距离变换常见算法有两种分水岭变换常见的算法 3、距离变换API函数接口4、watershed 分水岭函数API接口步骤 5、代码 一、基于距离变换与分水岭的图像分割 1、图像分割 图像分割(Image Segmentat…

A start job is running for Hold unt…s up (1d 18h 52min 25s / no limit) 如何去掉

在host串口里一直出现打印 A start job is running for Hold unt…s up (1d 18h 52min 25s / no limit) 这个是有一个进程一直在执行中,那么是什么呢?因为我的host通过SSH连接后就可以进入host shell界面了。那这个线程是什么程序导致的呢? …

最透彻HTTPS

Why HTTPS 我们先来看看HTTP。HTTP(Hypertext Transfer Protocol)超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议,可以说 HTTP 是当代互联网通信的基础。 但是,HTTP 有着一个致命的缺陷&…

位运算总结

文章目录 🍈1. 基础位运算🍌2. 给一个数n,确定它的二进制表示中的第x位是0还是1🍏3. 将一个数n的二进制表示的第x位修改成1🍓4. 将一个数的n的二进制表示的第x位修改成0🥔5. 位图的思想🫒6. 提前…

Linux如何查找某个路径下大于1G的文件

find 命令可以用于在 Linux 或 macOS 系统中查找文件和目录。如果你想查找大于1GB的文件,可以使用 -size 选项结合 参数。以下是一个示例: find /path/to/search -type f -size 1G这里的 /path/to/search 是你要搜索的目录的路径。这个命令将查找该目录…

算法基础二

回文数 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入&#xff1…