2.定义一个Animal类要求如下: (1)包括成员变量:名称name,体重weight,颜色color (2)包括动态方法run()(输出“run fastly”);eat()(输出“I love bone”) (3)定义重载方法run(String name),输出谁跑得快 (4)包括有参构造方法(利用Eclipse的Generate Constructor using Fileds方法) (5)在main方法里新建一个对象a(new调用构造方法),然后打印输出a的成员变量,再调用run和eat方法 再定义一个Dog类,要求如下 (6)继承父类Animal,增加新的成员变量:种类category (7)定义有参构造方法 (8)重写父类的run()方法(输出“dog run fastly”);eat()(输出“dog love bone”) (9)在main方法里新建一个对象d1(new调用构造方法,Dog d1 = new ….),然后打印输出d1的run和eat方法 (10)在main方法里新建一个Dog类的上转型对象d2(new调用构造方法, Animal d2 = new ….),然后打印输出的d2的run和eat方法,观察java的多态 (12)将d2 强制转换为Dog类型,并使用关键字instanceof判断d2是否是Dog类型,如果是打印输出d2的种类值。

时间: 2024-01-06 17:05:07 浏览: 64
下面是Animal类和Dog类的代码实现: ```java class Animal { String name; double weight; String color; public Animal(String name, double weight, String color) { this.name = name; this.weight = weight; this.color = color; } public void run() { System.out.println("run fastly"); } public void eat() { System.out.println("I love bone"); } public void run(String name) { System.out.println(name + " runs fastly"); } } class Dog extends Animal { String category; public Dog(String name, double weight, String color, String category) { super(name, weight, color); this.category = category; } @Override public void run() { System.out.println("dog run fastly"); } @Override public void eat() { System.out.println("dog love bone"); } } public class Main { public static void main(String[] args) { Animal a = new Animal("animal", 10.0, "brown"); System.out.println("Animal's name is " + a.name); System.out.println("Animal's weight is " + a.weight); System.out.println("Animal's color is " + a.color); a.run(); a.eat(); a.run("someone"); Dog d1 = new Dog("dog1", 15.0, "white", "husky"); System.out.println("Dog1's name is " + d1.name); System.out.println("Dog1's weight is " + d1.weight); System.out.println("Dog1's color is " + d1.color); System.out.println("Dog1's category is " + d1.category); d1.run(); d1.eat(); Animal d2 = new Dog("dog2", 20.0, "black", "poodle"); d2.run(); d2.eat(); if (d2 instanceof Dog) { Dog dog2 = (Dog) d2; System.out.println("Dog2's category is " + dog2.category); } } } ``` 输出结果如下: ``` Animal's name is animal Animal's weight is 10.0 Animal's color is brown run fastly I love bone someone runs fastly Dog1's name is dog1 Dog1's weight is 15.0 Dog1's color is white Dog1's category is husky dog run fastly dog love bone dog run fastly dog love bone Dog2's category is poodle ``` 可以看到,Animal类和Dog类都实现了要求的功能。同时,当我们将Dog对象赋值给Animal类型的变量d2时,可以看到d2的实际类型是Dog类型,因此调用d2的run和eat方法时会调用Dog类中重写的方法。最后,我们将d2强制转换为Dog类型,并使用instanceof判断d2是否是Dog类型,发现是的话就输出d2的种类值。

相关推荐

最新推荐

recommend-type

概率论与数理统计试卷三套(含答案)

2020-2021年概率论与数理统计试卷
recommend-type

“人力资源+大数据+薪酬报告+涨薪调薪”

人力资源+大数据+薪酬报告+涨薪调薪,在学习、工作生活中,越来越多的事务都会使用到报告,通常情况下,报告的内容含量大、篇幅较长。那么什么样的薪酬报告才是有效的呢?以下是小编精心整理的调薪申请报告,欢迎大家分享。相信老板看到这样的报告,一定会考虑涨薪的哦。
recommend-type

伊坂幸太郎21册合集.mobi

伊坂幸太郎21册合集.mobi
recommend-type

dsdy-b4-v30003-1h.apk

dsdy-b4-v30003-1h.apk
recommend-type

Python实现基于Socket通信+PyQt5的仿QQ聊天系统项目源码(高分项目)

Python实现基于Socket通信+PyQt5的仿QQ聊天系统项目源码(高分项目)开发软件: Pycharm+ Python3.6数据库:mysql8.0 本软件基于python gui图形库pyqt5编写的仿qq,采用mysql数据库存储,socket通信(tcp协议)实现,支持多账号登录,注册,单人私聊,群聊,添加好友分组等功能。 Python实现基于Socket通信+PyQt5的仿QQ聊天系统项目源码(高分项目)客户端界面目录文件:pyqt5-qq,服务端目录文件:Tcpserver Python实现基于Socket通信+PyQt5的仿QQ聊天系统项目源码(高分项目)服务端目录结构: common:存放公共的工具类代码文件目录,主要是配置文件解析工具类,数据库操作工具类,本软件主要使用的是sqlalchemy orm数据库框架。 configfile:存放配置文件目录 dto:存放数据库表模型类代码文件 Python实现基于Socket通信+PyQt5的仿QQ聊天系统项目源码(高分项目)客户端目录结构: image,res:存放资源文件,其他文件:界面及逻辑实现源码
recommend-type

STC89C51 简单时钟

STC89C51 简单时钟,叫你从基础开始学习单片机,
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB归一化方法大比拼:5种方法,哪种最适合你的数据?

![MATLAB归一化方法大比拼:5种方法,哪种最适合你的数据?](https://www.finebi.com/wp-content/uploads/2019/11/FineBI%E8%A1%8C%E4%B8%9A%E9%A9%BE%E9%A9%B6%E8%88%B1-1024x510.png) # 1. MATLAB归一化概述 归一化是一种数据预处理技术,用于将数据缩放到特定范围内,从而消除不同特征之间的尺度差异。在MATLAB中,有各种归一化方法可用于不同类型的数据和应用程序。 归一化的主要目的是: - 提高模型的训练效率和准确性,通过消除特征之间的尺度差异,使模型能够更有效地学习
recommend-type

failed to register layer: ApplyLayer exit status 1 stdout: stderr: archive/tar: invalid tar header

很抱歉听到这个问题。这个错误通常是由于Docker镜像损坏或Docker存储库中缺少所需的图层引起的。您可以尝试以下几种方法来解决这个问题: 1. 清理Docker镜像和容器:使用命令“docker system prune”清理不再使用的Docker对象。 2. 检查Docker存储库:确保您正在使用可靠的Docker存储库,并检查是否存在所有必需的图层。 3. 重新下载Docker镜像:如果您确定问题是由于损坏的Docker镜像引起的,则可以尝试重新下载Docker镜像。 4. 更新Docker版本:如果您使用的是旧版Docker,则可能会出现此问题。尝试更新到最新版本的Docke
recommend-type

Linux系统常用操作命令大全手册

附件是Linux系统常用操作命令大全手册,是 markdown格式,其中覆盖了Linux系统管理、文件操作、网络配置等多个方面,都是日常工作中非常常用的命令,欢迎大家下载学习使用!