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

目录

一、实验目的

二、实验内容

三、实验小结


一、实验目的

  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爱好者指正,小弟定当虚心受教!

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

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

相关文章

vscode 如何连接 WSL (不能通过 IP 地址连接)

来源:https://www.cnblogs.com/wxdblog/p/17234342.html vscode (remote-ssh) 连接 WSL 不能使用 IP地址 连接,需要安装 WSL 扩展才行

常用显示屏学习——LCD12864(含高级驱动程序)

LCD12864液晶显示屏 屏幕介绍 ① 可显示四行字符,每行可显示8个汉字或者16个数字和字母; ②可串行通信和并行通信; ③ 串口接口管脚信号 通信方法 (一)八位并行通信方法 (二)串行通信方法 用…

linux安装flink(单节点)

下载链接 https://downloads.apache.org/flink/flink-1.18.1/上传,解压,重命名,注意路径 tar -zxf /opt/flink-scala/flink-1.18.1-bin-scala_2.12.tgz -C /opt/flink-scala mv /opt/flink-scala/flink-1.18.1 /opt/flink-scala/flink环境变…

su模型在3d里渲染效果如何---模大狮模型网

SketchUp模型在其他3D应用程序中进行渲染可以获得非常好的效果,取决于您所选择的渲染引擎和技术水平。下面是一些常见的渲染效果和技巧: 一:光照和阴影 通过添加适当的光源和调整阴影设置,可以使SketchUp模型在渲染中呈现出更加真…

基于Python网络爬虫的IT招聘就业岗位可视化分析推荐系统

文章目录 基于Python网络爬虫的IT招聘就业岗位可视化分析推荐系统项目概述招聘岗位数据爬虫分析系统展示用户注册登录系统首页IT招聘数据开发岗-javaIT招聘数据开发岗-PythonIT招聘数据开发岗-AndroidIT招聘数据开发岗-其它招聘岗位数据分析算法方面运维方面测试方面招聘岗位薪…

【多线程】volatile 关键字、wait 和 notify方法详解

volatile 、wait 和 notify 🌲volatile关键字🚩保证内存可见性🚩volatile 不保证原⼦性 🌳wait 和 notify方法🚩wait()🚩notify()🚩notifyAll()方法 ⭕wait 和 sleep 的对比( 面试题…

机器学习基础(四)非监督学习的进阶探索

导语:上一节我们详细探索监督学习的进阶应用,详情可见: 机器学习基础(三)监督学习的进阶探索-CSDN博客文章浏览阅读296次,点赞13次,收藏11次。监督学习作为机器学习的一个主要分支,…

RHEL9安装Python2.7

RHEL9作为2022年5月新推出的版本,较RHEL8有了很多地方的改进,而且自带很多包,功能非常强大,稳定性和流畅度也较先前版本有了很大的提升。RHEL9自带python3.9,但是过高版本的python不可避免地会导致一些旧版本包地不兼容…

【分布式事务 XA模式】MySQL XA模式详解

MYSQL中的XA事务 写在前面1. XA事务的基本原理2. MySQL XA事务操作 写在前面 MySQL 的 5.0.3 版本开始支持XA分布式事务,并且只有innoDB存储引擎支持XA事务。 1. XA事务的基本原理 XA事务本质上是一种基于两阶段提交的分布式事务,分布式事务可以理解成…

一些PCB整改优化经验总结

一个UP的PCB整改经验: 当正面全局铺铜之后出现很多小铜皮碎片的时候不如不铺铜或者单面铺铜RJ45网口的地和整体的地分开,两地之间通过电容相连(整板地一定要相连)TVS这种防浪涌高压的器件的地单独铺设,这样当高压来临…

《艾尔登法环 黄金树幽影》是什么?Mac电脑怎么玩《艾尔登法环》艾尔登法环下载

全体起立,《艾尔登法环 》最新DLC《黄金树幽影》将在6月21日发布,steam售价198元,现在就可以预订了。宫崎英高在接受FAMI通的采访时表示,新DLC的体量远超《黑暗之魂》和《血源诅咒》资料片。好家伙,别人是把DLC续作&am…

踩坑:SpringBoot连接Mysql的时区报错

解决方法:1.修改时区2.修改连接版本 目录 1.修改时区 2.切换版本 1.修改时区 查看mysql的默认时区 SELECT global.time_zone AS Global Time Zone, session.time_zone AS Session Time Zone; 查看mysqk的默认是时区返回两个结果 Global Time Zone:表示Mysql…

Jenkins中Publish Over SSH插件使用(1)

SSH插件 前言Publish Over SSH插件是jenkins里面必不可少的插件之一,主要的功能有两个把jenkins服务器上的文件,传输到远程nginx, 远程执行shell命令和脚本。 1. SSH插件下载与配置 1.1 下载Publish over SSH插件 系统管理—》管理插件 …

可控核聚变新里程碑!AI成功预测等离子体撕裂登Nature,清洁能源「圣杯」更近一步

可控核聚变,又有新突破了! 长期以来,核聚变一直受着一个「幽灵」的困扰——等离子体不稳定性问题。 而最近,普林斯顿团队用AI提前300毫秒预测了核聚变等离子不稳定态,这个时间,就足够约束磁场调整应对等离…

美团外卖流程解析:便捷、高效、安全的美食配送

美团外卖作为中国最大的外卖平台之一,提供了丰富多样的美食选择,并通过高效的配送服务将美食送到用户手中。本文将深入探讨美团外卖的流程,从下单到送达,揭秘背后的便捷、高效、安全的运营体系。 1. 下单与支付 美团外卖的下单过…

[每周一更]-(第88期):Nginx 之 proxy_pass使用详解

proxy_pass 指令用于指定后端服务器的地址,可以采用以下不同的格式: 直接指定地址和端口: location / {proxy_pass http://backend_server:8080; }这将请求代理到 http://backend_server:8080。 使用变量: location / {set $ba…

bat脚本检测进程程序的方法

一、脚本检测进程 使用批处理脚本检测程序是否在运行,可以使用tasklist命令来列出当前运行的所有进程,并通过findstr命令来搜索特定的进程名。下面是一个简单的批处理脚本示例,它会检测指定的程序是否在运行,并给出相应的信息&…

PostgreSQL索引篇 | BTree

B-Tree索引 (本文为《PostgreSQL数据库内核分析》一书的总结笔记,需要电子版的可私信我) B树特点: 非叶子节点含一个或多个关键字值和子节点指针,不指向实际数据的存储位置所有关键字都是叶子节点,每个叶…

echarts多y轴样式重叠问题

1、主要属性设置 yAxis: [{//y轴1nameTextStyle: {align: "right",padding: 0}},{//y轴2nameTextStyle: {align: "left",padding: 0}},{//y轴3axisLabel: {margin: 50},nameTextStyle: {align: "left",padding: [0, 0, 0, 50]},axisPointer: {l…

华为HCIP Datacom H12-831 卷24

多选题 1、如图所示,某园区部署OSPF实现网络互通,其中Area1部署为NSSA区域。某工程师为了实现R1访问R4的环回口地址,在R4的OSPF进程中引入直连路由。以下关于该场景的描述,错误的有哪些项? A、在R4引入直连路由后,R1通过转换后的…