当前位置: 首页 > article >正文

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 使用面向对象的思想编写程序描述动物 的全部内容了,希望能对你有所帮助!


http://www.kler.cn/news/149062.html

相关文章:

  • 开题答辩稿
  • ffmpeg 音视频转化
  • Maven——Maven发展历程
  • Java程序连接 nacos集群
  • Taro3+Vue3重构Mpvue小程序项目踩坑记
  • 一台服务器能放多少个网站?
  • 西南科技大学模拟电子技术实验二(二极管特性测试及其应用电路)预习报告
  • (2)(2.1) Lightware SF40/C(360度)
  • 一文搞定XMLHttpRequest,AJAX,Promise,Axios及操作实战
  • 解密Long型数据传递:Spring Boot后台如何避免精度丢失问题
  • 探索亚马逊云科技云存储服务的性能
  • 封装Vue中的axios请求库
  • 【Spark基础】-- RDD 转 Dataframe 的三种方式
  • 231128 刷题日报
  • 【精选】Spring整合MyBatis,Junit 及Spring 事务Spring AOP面向切面详解
  • Qt问题 QString 和 void* 相互转化
  • Kafka 保证消息消费全局顺序性
  • Flask教程入门
  • Android 13.0 修改系统默认设备类型的平板电脑类型为设备类型
  • MySQL索引优化实战一
  • 万户协同办公平台ezoffice SendFileCheckTemplateEdit.jsp接口存在SQL注入漏洞 附POC
  • SpringBoot项目整合Redis,Rabbitmq发送、消费、存储邮件
  • 代码随想录算法训练营 ---第四十九天
  • 在Visual Studio Code中安装加速TypeScript程序开发的插件
  • Git工作流和Commit规范
  • 12:kotlin类和对象 -- 继承
  • C语言第三十六弹--实现转移表的多种方法
  • redis基本数据结构
  • FFA 2023|字节跳动 7 项议题入选
  • 计算机基础知识57