【Java】动物和狗的类继承与多态

文章目录

  • Java 面向对象编程实践:动物和狗的类继承与多态
      • 1. Animal类
      • 2. Dog类
      • 3. 测试类
        • test_Animal_01
        • test_Animal_02
        • test_Animal_03
        • test_Animal_05
        • test_Animal_06


Java 面向对象编程实践:动物和狗的类继承与多态

在这篇文章中,我们将通过一个简单的例子来探讨Java中的面向对象编程(OOP)概念,包括类继承、抽象类、多态以及构造函数的使用。我们将创建一个抽象的Animal类,然后创建一个继承自AnimalDog类,并在不同的测试类中实例化Dog类的对象。

1. Animal类

Animal类是一个抽象类,它定义了动物的基本属性和行为。由于它是抽象的,我们不能直接实例化这个类,但可以迫使子类实现我们声明的抽象方法。

// 定义一个抽象类Animal,表示动物的基类
public abstract class Animal {protected String name; // 动物的名字private int age; // 动物的年龄public final String COLOR = "黑色"; // 动物的颜色,默认为黑色// 无参构造函数public Animal() {}// 带参数的构造函数,用于初始化动物的名字和年龄public Animal(String name, int age) {this.name = name;this.age = age;}// 返回动物的信息public String info() {return "名字:" + getName() + ", 年龄:" + getAge();}// 设置动物的名字public void setName(String name) {this.name = name;}// 设置动物的年龄public void setAge(int age) {this.age = age;}// 获取动物的名字public String getName() {return name;}// 获取动物的年龄public int getAge() {return age;}// 抽象方法,子类需要实现动物的叫声public abstract void shout();
}

2. Dog类

Dog类继承自Animal类,并实现了shout方法,这是多态的一个例子。Dog类还添加了额外的属性color

// 定义一个Dog类,继承自Animal类
class Dog extends Animal {private String color; // 狗的颜色// 带参数的构造函数,用于初始化狗的名字、年龄和颜色public Dog(String name, int age, String color) {super(name, age); // 调用父类的构造函数this.color = color;}// 无参构造函数public Dog() {super();}// 设置狗的颜色public void setColor(String color) {this.color = color;}// 获取狗的颜色public String getColor() {return color;}// 重写父类的shout方法,实现狗的叫声@Overridepublic void shout() {System.out.println("小狗汪汪汪!");}// 打印狗的名字public void printName() {System.out.println("名字:" + getName());}// 重写父类的info方法,添加狗的颜色信息public String info() {return super.info() + ", 颜色:" + getColor();}
}

3. 测试类

我们将创建几个测试类来演示如何使用Dog类。

test_Animal_01
class test_Animal_01 {public static void main(String[] args) {// 创建一个Dog对象,并初始化名字、年龄和颜色Dog dog = new Dog("dog1", 4, "蓝色");// 打印狗的名字、年龄和颜色System.out.println("名字:" + dog.getName() + ",年龄:" + dog.getAge() + ",颜色:" + dog.getColor());// 调用shout方法,输出狗的叫声dog.shout();}
}

输出:

名字:dog1,年龄:4,颜色:蓝色
小狗汪汪汪!
test_Animal_02
class test_Animal_02 {public static void main(String[] args) {// 创建一个Dog对象,并初始化名字、年龄和颜色Dog dog = new Dog("dog1", 4, "蓝色");// 调用shout方法,输出狗的叫声dog.shout();}
}

输出:

小狗汪汪汪!
test_Animal_03
class test_Animal_03 {public static void main(String[] args) {// 创建一个Dog对象,并初始化名字、年龄和颜色Dog dog = new Dog("dog1", 4, "蓝色");// 调用shout方法,输出狗的叫声dog.shout();// 修改狗的名字dog.setName("一只小狗汪汪汪!!!");// 打印修改后的狗的名字dog.printName();}
}

输出:

小狗汪汪汪!
名字:一只小狗汪汪汪!!!
test_Animal_05
class test_Animal_05 {public static void main(String[] args) {// 声明一个final字符串变量,但没有输出final String name = "狗儿~";}
}

这个类没有输出,因为它只声明了一个final字符串变量。

test_Animal_06
public class test_Animal_06 {public static void main(String[] args) {// 创建一个Dog对象,但没有初始化名字和年龄Dog dog = new Dog();// 调用shout方法,输出狗的叫声dog.shout();}
}

输出:

小狗汪汪汪!

这个类创建了一个Dog对象,但是没有设置名字和年龄,所以shout方法只是简单地输出了"小狗汪汪汪!"。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Window 安装ack 搜索软件 及使用

1. 先安装 PowerShell 命令行工具 2. 通过该工具安装命令行包管理器工具 Chocolatey 命令: Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol [System.Net.ServicePointManager]::SecurityProtocol -bor …

基于SSM的社区物业管理系统+LW参考示例

1.项目介绍 系统角色:管理员、业主(普通用户)功能模块:管理员(用户管理、二手置换管理、报修管理、缴费管理、公告管理)、普通用户(登录注册、二手置换、生活缴费、信息采集、报事报修&#xf…

ubuntu中安装mysql

一、注意版本问题 ubuntu常用的版本是16.4,18.4,对应的mysql文件也不同,注意不要下载错误。 二、注意更换apt的源 sudo cat /etc/apt/sources.list查看现在的数据源,我更换了阿里的数据源。更换语句如下: sed -i s/http:\/\/…

2024数据库国测揭晓:安全与可靠的新标准,你了解多少?

2024年数据库国测的结果,于9月份的最后一天发布了。 对于数据库行业的从业者来说,国测是我们绕不过去的坎儿。那么什么是国测?为什么要通过国测,以及国测的要求有哪些? 这篇文章带大家一探究竟。 国测 自愿平等、客…

Ubuntu - 进入紧急模式,无法进入桌面

目录 一、问题 二、分析原因 三、解决 四、参考 一、问题 重新安装VMVare之后,将之前的虚拟机加载不进来 二、分析原因 查看系统错误日志 journalctl -xb | grep Failed mnt挂载找不到了 三、解决 查看系统错误日志 如果是磁盘错误,此时终端会有…

基于STM32的八位数码管显示Proteus仿真设计

基于STM32的八位数码管显示Proteus仿真设计 1.主要功能2.仿真设计3. 程序设计4. 设计报告5. 资料清单&下载链接 基于STM32的八位数码管显示Proteus仿真设计(仿真程序设计报告讲解视频) 仿真图proteus 8.9 程序编译器:keil 5 编程语言:…

数据库管理-第257期 有好故事才能讲好故事(20241101)

数据库管理257期 2024-11-01 数据库管理-第257期 有好故事才能讲好故事(20241101)1 23c到23ai2 惊艳的APEX3 愿景到实现总结 数据库管理-第257期 有好故事才能讲好故事(20241101) 作者:胖头鱼的鱼缸(尹海文…

FreeRTOS 队列详解

目录 一、引言 二、FreeRTOS 队列的基本概念 1.定义与作用 2.队列的长度和数据大小 三、FreeRTOS 队列的特点 1.先进先出(FIFO)特性 2.值传递方式 3.多任务访问 4.阻塞机制 四、FreeRTOS 队列的操作方法 1.创建队列 2.写队列(发送…

Java项目实战II基于Spring Boot的问卷调查系统的设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导 一、前言 在当今信息爆炸的时代,问卷调查…

基于JavaWeb的宿舍管理系统的设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

EPSON机械手与第三方相机的校准功能设计By python

EPSON机械手与第三方相机的校准功能设计By python 使用Python来实现EPSON机械手与第三方相机的校准功能是一个复杂但可行的任务。这通常涉及以下几个步骤:硬件接口通信、图像处理、标定算法实现和控制逻辑编写。 1. 环境准备 首先,库 pip install numpy opencv-python pyse…

【电子通识】白皮书、应用手册、用户指南、快速入门指南一般的定义是什么?

一般大厂家的器件或模块,除了给数据表以外,还提供应用手册、技术说明、白皮书等各种文档资料。 如下图所示为ST25 NFC/RFID标签和读卡器的文件资料:其中就有技术说明、白皮书、应用手册等。 如下所示为TI INA228技术文档相关资料: 也有应用手册、用户指南、技术文章…

【真实对抗环境】MC-Net: Realistic Sample Generation for Black-Box Attacks

原文标题: MC-Net: Realistic Sample Generation for Black-Box Attacks 原文代码: https://github.com/jiaokailun/A-fast 发布年度: 2024 发布期刊: TIFS 目录 摘要背景创新点模型实验结论 摘要 One area of current research …

0-基于图的组合优化算法学习(NeurIPS 2017)(未完)

文章目录 Abstract1 Introduction2 图上的贪婪算法的通用表述Abstract 为NP-hard组合优化问题设计好的启发式或近似算法通常需要大量的专业知识和试错。我们能否自动化这个具有挑战性、乏味的过程,而不是学习算法呢?在许多实际应用中,通常是相同的优化问题一次又一次地被解…

ctfshow(316)--XSS漏洞--反射性XSS

Web316 进入界面: 审计 显示是关于反射性XSS的题目。 思路 首先想到利用XSS平台解题,看其他师傅的wp提示flag是在cookie中。 当前页面的cookie是flagyou%20are%20not%20admin%20no%20flag。 但是这里我使用XSS平台,显示的cookie还是这样…

AI 大模型重塑软件开发流程

一、AI 大模型的定义 AI 大模型是指具有大量参数和复杂结构的人工智能模型,通过在大规模数据上进行训练,可以学习到丰富的知识和模式。这些模型通常基于深度学习技术,如神经网络,能够处理自然语言、图像、音频等多种类型的数据&am…

LeetCode 3216. 交换后字典序最小的字符串[简单]

. - 力扣(LeetCode) 题目 给你一个仅由数字组成的字符串 s,在最多交换一次 相邻 且具有相同 奇偶性 的数字后,返回可以得到的字典序最小的字符串。 相同奇偶性:如果两个数字都是奇数或都是偶数,则它们具…

建筑行业员工离职SOP的数字化管理

在建筑行业,随着数字化转型的深入,对员工离职的标准操作程序(SOP)进行数字化管理变得尤为重要。这不仅有助于提高管理效率,还能确保离职流程的规范性和合规性。本文将探讨建筑行业如何通过数字化手段管理员工离职SOP&a…

【你也能从零基础学会网站开发】 SQL Server结构化查询语言数据操作应用--DML篇 浅谈SQL JOIN多表查询之FULL JOIN 全连接查询

🚀 个人主页 极客小俊 ✍🏻 作者简介:程序猿、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注 FULL JOIN 全连…

高效数据集成:从旺店通到金蝶云

高效数据集成:从旺店通到金蝶云 旺店通旗舰奇门数据集成到金蝶云星空:柏为销售出库单07.25 在现代企业的运营中,数据的高效流转和准确对接是确保业务顺畅运行的关键。本文将分享一个实际案例——如何通过轻易云数据集成平台,将旺…