【Java】继承与抽象(实验三)

news2024/10/6 8:35:24

目录

一、实验目的

二、实验内容

三、实验小结


一、实验目的

  1. 了解继承的概念,掌握派生类的定义。
  2. 掌握派生类构造方法的执行过程。
  3. 掌握方法的重载与覆盖。
  4. 掌握抽象类的概念及上转型对象的使用

二、实验内容

1、定义一个抽象类Shape,类中封装属性name指定图形名称,定义用于求面积的抽象方法。定义3个子类:圆形类Circle、梯形类Trapezoid和三角形类Triangle,都继承Shape类,子类中各自新增属性(上转对象无法访问),定义构造方法、设置属性值的方法并重写shape类中的方法。在Circle类和Triangle类中还新增求周长的方法(上转对象无法调用)。在主类中定义Shape类的对象,创建子类对象,设置其属性值,并输出其面积与周长,在程序中要体现上转型对象的使用。

源代码:

实验运行截图:

2. 假设银行 Bank 已经有了按整年 year 计算利息的一般方法,其中 year 只能取正整数。比如按整年计算的方法:

double computerInterest() {

interest=year * 0.35 * savedMoney;

return interest;

}

建设银行 ConstructionBank 是 Bank 的子类,准备隐藏继承的成员变量 year,并重写计算利息的方法,即自己声明一个 double 型的 year 变量,比如,当 year 取值是 5.216  时,表示要计算 5 年零 216 天的利息,但希望首先按银行 Bank 的方法 computerInterest()计算出 5 整年的利息,然后再自己计算 216 天的利息,活期存款利息计算公式为:活期存款天数/360*活期存款利率*存款金额。那么,建设银行就必须把 5.216 的整数部分赋给隐藏的 year,并让 super 调用隐藏的、按整年计算利息的方法。

要求 ConstructionBank 和 BankOfDalian 类是 Bank 类的子类,ConstructionBank 和

BankOfDalian 都使用 super 调用隐藏的成员变量和方法。

ConstructionBank、BankOfDalian 和 Bank 类的 UML 图如下图所示。

源代码:

 实验运行截图:

 

三、实验小结

1、继承就是将各类中相同的成员变量和方法抽出来,单独放在一个类中(父类),这样各子类就可以复用父类中的成员作为自己的成员。

2、成员变量和方法(*访问限制符在本类中不起作用):

         2.1默认的(友好的)的 ,同包(同文件夹)下通过类的对象能继承能访问,不同包下不能继承和访问。默认的类同包下能继承能创建对象。

         2.2 protected(受保护的),同包下对象能继承能访问,不同包下能继承不能访问。

         2.3 public(公共的),任何场景下能继承能访问。修饰的类能继承能创建对象,必须单独在一个文件夹中。

         2.4 private(私有的),任何场景下不能继承不能访问。

         2.5 final(最终的),修饰的变量是常量、声明时必须初始化,中途不能修改其值;修饰的方法不能被子类重写。修饰的类不能被继承。

         2.6 abstract修饰的方法为抽象方法、不能有函数体,只能位于抽象类中,由抽象类的子类对其进行重写。修饰的类不能创建对象,一般做父类用。

3、A instanceof B 运算符用于判断某对象是否是属于某个子类或父类,是则返回true,否则返回false。

4、 如果在子类中有和父类重名继承的成员变量或类型名、方法名、方法的参数相同的方法,则子类创建的对象只能操作子类中的重名的变量或方法,除非通过super来调用父类中的重名变量或被复写的方法。

5、super关键字既可以的调用父类中被隐藏的变量和被重写的方法,还可以通过”super()”调用父类中构造方法且必须位于子类构造方法中的首个语句。

6、父类中的构造方法不会被子类继承。且用户使用new创建对象时,会自动先通过子类的构造方法调用父类中的无参构造方法、然后再执行子类中的构造代码。

7、对象的上转型对象:

          7.1先为父类声明一个对象

         7.2 然后将创建的子类对象的引用地址赋值给父类创建的变量。此变量此时就是上转型对象。

上转对象只能操作父类中继承的变量和方法和子类重写抽象类中的方法;不能操作子类中的变量和方法。

8、子类对象调用父类中的方法,此时父类中的方法只能操作父类中的成员变量和方法,无法操作子类中的成员变量和方法。

@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!

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

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

相关文章

详解AP3216C(三合一sensor: 光照、距离、照射强度)驱动开发

目录 概述 1 认识AP3216C 1.1 AP3216C特性 1.2 AP3216C内部结构 1.3 AP3216C 硬件电路 1.4 AP3216C工作时序 1.4.1 I2C 写数据协议 1.4.2 I2C 读数据协议 1.5 重要的寄存器 1.5.1 系统配置寄存器 1.5.2 和中断相关寄存器 1.5.3 IR数据寄存器 1.5.4 ALS 数据寄存器 …

C++之stack与queue的模拟实现

一、 stack的介绍和使用 1. stack的介绍 stack 的文档介绍 翻译: 1. stack 是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。 2. stack 是作为容器适配器被实现的&#xff…

C++的queue容器->基本概念、常用接口

#include<iostream> using namespace std; #include <queue> #include <string> //队列 queue class Person { public: Person(string name, int age) { this->m_Name name; this->m_Age age; } string m_Name; int…

.netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项

1、SqlSugarCore 相关 1.1 主项目添加数据&#xff0c;否则会报数据库连接错误&#xff1a; <InvariantGlobalization>false</InvariantGlobalization> <PropertyGroup><TargetFramework>net8.0</TargetFramework><Nullable>enable</…

PostMan使用自带js库base64编码、sha256摘要、环境变量的使用

目录 1、环境变量的使用2、base64编码、sha256摘要、以及脚本的使用3、脚本代码 在请求调试接口的过程中&#xff0c;因为要使用大量相同的参数&#xff0c;使用变量的方式能很大程度上减轻接口调用的工作量 版本说明&#xff1a;Postman for Windows&#xff0c;Version&#…

【办公类-16-10-02】“2023下学期 6个中班 自主游戏观察记录(python 排班表系列)

背景需求&#xff1a; 已经制作了本学期的中4班自主游戏观察记录表 【办公类-16-10-01】“2023下学期 中4班 自主游戏观察记录&#xff08;python 排班表系列&#xff09;-CSDN博客文章浏览阅读398次&#xff0c;点赞10次&#xff0c;收藏3次。【办公类-16-10-01】“2023下学…

无人机竞赛常用目标检测方法--色块检测

本次开源计划主要针对大学生无人机相关竞赛的视觉算法开发。 开源代码仓库链接&#xff1a;https://github.com/zzhmx/Using-color-gamut-limitations-such-as-HSV-and-RGB-for-object-detection.git 主要使用传统算法&#xff0c;如果想要使用进阶版机器学习算法&#xff0c;请…

golang tun设备创建并监听

golang tun设备创建并监听 linux tun设备文件地址为/dev/net/tun.直接打开即可(关闭文件描述符创建的tun虚拟接口自动注销) fd,err:syscall.Open("/dev/net/tun",syscall.O_RDWR,0640)//关闭 syscall.Close(fd)初始化 配置ip地址启动虚拟网卡 ip addr add xxx.xx…

【数据分享】中国首套1公里高分辨率大气湿度指数数据集(6个指标\免费获取)

湿度数据是气象学和许多其他领域中至关重要的数据&#xff0c;可用于气象预测与气候研究。之前我们分享过Excel格式和GIS矢量格式&#xff08;均可查看之前的文章获悉详情&#xff09;的2000-2020年全国各城市逐日、逐月和逐年的湿度数据。 本次我们给大家带来的是中国首套1公…

【Linux网络】网络编程套接字(TCP)

目录 地址转换函数 字符串IP转整数IP 整数IP转字符串IP 关于inet_ntoa 简单的单执行流TCP网络程序 TCP socket API 详解及封装TCP socket 服务端创建套接字 服务端绑定 服务端监听 服务端获取连接 服务端处理请求 客户端创建套接字 客户端连接服务器 客户端…

2023年的AI模型学习/部署/优化

可以的话&#xff0c;github上给点一个小心心&#xff0c;感谢观看。 LDC边缘检测的轻量级密集卷积神经网络&#xff1a; meiqisheng/LDC (github.com)https://github.com/meiqisheng/LDC segment-anything分割一切的图像分割算法模型&#xff1a; meiqisheng/segment-anyt…

vue2+element医院安全(不良)事件报告管理系统源代码

目录 安全不良事件类型 源码技术栈 医院安全&#xff08;不良&#xff09;事件报告管理系统采用无责的、自愿的填报不良事件方式&#xff0c;有效地减轻医护人员的思想压力&#xff0c;实现以事件为主要对象&#xff0c;可以自动、及时、实际地反应医院的安全、不良、近失事件…

flink state原理,TTL,状态后端,数据倾斜一文全

flink state原理 1. 状态、状态后端、Checkpoint 三者之间的区别及关系&#xff1f;2 算子状态与键控状态的区别2.1 算子状态2.2 键控状态2.3 算子状态api2.4 键控状态api 3 HashMapStateBackend 状态后端4 EmBeddedRocksDbStateBackend 状态后端5 状态数据结构介绍5.1 算子状态…

129 Linux 系统编程8 IO操作 系统函数 open

系统调用 什么是系统调用&#xff1a; 由操作系统实现并提供给外部应用程序的编程接口。(Application Programming Interface&#xff0c;API)。是应用程序同系统之间数据交互的桥梁。 C标准函数和系统函数调用关系。一个helloworld如何打印到屏幕。 回忆我们前面学过的C标准…

ArcgisForJS如何使用ArcGIS Server发布的切片地图服务?

文章目录 0.引言1.准备海量地理数据2.ArcGIS Server发布切片地图服务3.ArcgisForJS使用ArcGIS Server发布的切片地图服务 0.引言 ArcGIS Server是一个由Esri开发的地理信息系统&#xff08;GIS&#xff09;服务器软件&#xff0c;它提供了许多功能&#xff0c;包括发布切片地图…

MIT-6.824-Lab2,Raft部分笔记|Use Go

文章目录 前记Paper6&#xff1a;RaftLEC5、6&#xff1a;RaftLAB22AtaskHintlockingstructureguide设计与编码 2BtaskHint设计与编码 2CtaskHint question后记 LEC5&#xff1a;GO, Threads, and Raftgo threads技巧raft实验易错点debug技巧 前记 趁着研一考完期末有点点空余…

springboot751社区维修平台

springboot751社区维修平台 获取源码——》公主号&#xff1a;计算机专业毕设大全

【Logback】Logback 日志框架的架构

目录 1、Logger&#xff08;记录器&#xff09; &#xff08;1&#xff09;有效级别和级别继承 &#xff08;2&#xff09;日志打印和日志筛选 &#xff08;3&#xff09;记录器命名 2、Appenders&#xff08;追加器&#xff09; 3、Layouts&#xff08;布局&#xff09;…

C语言-指针初学速成

1.指针是什么 C语言指针是一种特殊的变量&#xff0c;用于存储内存地址。它可以指向其他变量或者其他数据结构&#xff0c;通过指针可以直接访问或修改存储在指定地址的值。指针可以帮助我们在程序中动态地分配和释放内存&#xff0c;以及进行复杂的数据操作。在C语言中&#…

数字化魔方:旋转到本地部署还是SaaS模式?

数字化系统部署策略的选择&#xff0c;无论是本地部署还是SaaS模式&#xff0c;其核心在于契合企业的个性化需求、成本考量、安全要求以及未来发展战略。两种部署方式各有优势和挑战&#xff0c;需要企业深入分析自身情况&#xff0c;审慎抉择。 对于本地部署而言&#xff0c;它…