Java(四)(多态,final,常量,抽象类,接口)

目录

多态

基本概念:

使用多态的好处

类型转换

遇到的问题

解决方法

强制类型转换的一个注意事项

final

常量

抽象类

啥是个抽象类?

抽象类的注意事项,特点

抽象类的场景和好处

抽象类的常见应用场景: 模板方法设计模式

接口

基本概念

接口的好处

JDK8开始,接口新增了三种形式的方法:

接口的多继承


多态

基本概念:

什么是多态:多态在继承/实现情况下的一种现象,表现为: 对象多态、行为多态

咱们来举出一个现实中的一个例子来解释对象多态和行为多态是个啥东西:

对象多态:你是你父母的儿子,是老师的学生,我们每个人会有不同的角色,这个就是生活中的对象多态

行为多态: 我们每个人都会跑,但是有人跑的慢,有的人跑的快,同一种行为会有不同的表现形式,这就是我们说的行为多态

多态的代码实现:

多态的识别技巧:编译看左边,运行看右边

多态的前提: 有继承/实现关系; 存在父类引用子类对象;存在方法重写

有一点需要注意: 多态是对象、行为的多态,Java中的属性(成员变量)不太多态

使用多态的好处

在多态形式下,右边对象是解耦合的,更便于扩展和维护

定义方法的时,使用父类类型的形参,可以接收一切子类对象,扩展性更强,更便利

上面的意思就是我们现在要体测,老师和学生都要参加,我们在体测这个方法中设置形参的时候,设置父类People数据类型就行了,就可以接收他所有的子类对象

类型转换

遇到的问题

多态中有个问题就是对象是不能调用子类中的私有方法的

解决方法

自动类型转换: 父类  变量名 = new 子类()

强制类型转换: 子类 变量名 = (子类) 父类变量

强制类型转换的一个注意事项

存在继承/实现关系就可以在编译阶段进行强制类型转换,编译阶段不会报错

运行时,如果发现对象的真实类型与强转后的类型不同,就会报类型转换异常(ClassCastException)的错误出来

正确形式

错误形式

强制转换类型的时候,Java建议我们要进行instanceof来进行判断

final

final关键字是最终的意思,可以修饰(类,方法,变量)

修饰类: 该类被称为最终类,特点是不能被继承了

修饰方法:该方法被称为最终方法,特点是不能被重写了

修饰变量: 该变量只能被赋值一次(变量: (1) 局部变量(2)成员变量 : 静态成员变量和实例成员变量)

常量

使用static final 修饰的成员变量就被称为常量

作用: 通常用于记录系统中的配置

抽象类

抽象类是不能定义对象的,假如说我有一个抽象类为A , A a = new A();这样会报错的

Java中有一个关键字叫: abstract,他是抽象的意思,可以用它修饰类,成员方法

abstract修饰类,这个类就是抽象类;修饰方法,这个方法就是抽象方法

啥是个抽象类?

抽象类的注意事项,特点

1.

2.类该有的变量(成员变量,方法,构造器)抽象类都可以有

3.抽象类最主要的特点:抽象类不能创建对象,仅作为一种特殊的父类,让子类继承并实现

4.子类中的方法必须重写,否则他也是一个抽象类,用abstract来修饰

抽象类的场景和好处

父类知道每个子类都要做某一个行为,但每个子类都做的情况不一样,父类就定义成抽象方法,交给子类去重写实现,我们设计这样的抽象类,就是为了更好的支持多态(对象多态和行为多态)(很重要呀,知道好处了,就能深刻理解这东西了)

我们来举个例子来看看

假如说我现在有需求,某宠物游戏,需要管理猫,狗的数据。猫的数据有;名字,行为是:喵喵喵的叫~,

狗的数据有:名字,行为是: 汪汪汪的叫~,请用面向对象编程设计该程序

思路: 因为我们看见这个猫和狗都有名字,我们可以将猫和狗定义一个父类Animal,父类中写一个成员变量,来存放名字,可以将Animal设置成抽象类,然后子类来实现这个方法重写

抽象类的常见应用场景: 模板方法设计模式

接口

基本概念

语法:

另外说明一点: 接口中是不存在构造器啥的,只有我上面写的两种东西

因为这个是抽象类的有抽象方法,所以是不能创建A类对象的

注意: 接口不能创建对象,接口是用来被类实现的,实现接口的类称为实现类

上面是我们实现的两个接口,下面是我们的实现类,一个实现类可以有多个接口(可以理解成干爹),,实现类实现多个接口,必须重写全部接口的全部抽象方法,否则实现类需要定义成抽象类

接口的好处

弥补了类单继承的不足,一个类可以同时有多个接口

JDK8开始,接口新增了三种形式的方法:


public interface A {/*** 1.默认方法(实例方法):使用default修饰,默认会被加上public修饰,注意,只能使用接口的实现类对象调用* 默认是public方法修饰的*/default void test1(){System.out.println("这是默认方法");test2();}/*** 私有方法:必须用private修饰(jdk9才开始支持)*/private void test2(){}/*** 类方法(静态方法):调用static修饰,默认会被加上public修饰,注意:只能用接口来调用*/static void test3(){}
}

接口的多继承

一个接口可以同时继承多个接口

public interface C extends B,A{

}

注意事项:如果继承的多个接口冲突,就像下面这样,I和J中都有test1方法,但是一个有返回值,一个没有返回值,则就不支持多继承了

 当一个子类既继承了父类,又存在接口,我们可以看下面这个图,IT和Fu都有run方法,但是子类会优先调用它父亲的run方法

 

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

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

相关文章

[计算机网络实验]头歌 实验二 以太网帧、IP报文分析

第1关:Wireshark基本使用入门 【实验目的】 1、掌握wireshark工具的基本使用方法 【实验环境】 1、头歌基于Linux的虚拟机桌面系统 2、网络报文分析工具wireshark 3、浏览器firefox 【本地主机、平台虚拟机之间数据传递】 1、文本的复制与粘贴 操作入口&…

半导体业库存问题缓解,明年迎来良好转机 | 百能云芯

随着全球半导体产业今年产值预计将出现逾1成的衰退,市场一度陷入不确定性。然而,半导体厂商们对于供应链库存的有效去化表示乐观,预计将为明年带来健康的复苏。在各种因素交织的复杂情况下,半导体产业展现出逐步解决库存问题、迎来…

vivado产生报告阅读分析14-时序报告10

Vivado IDE 中的例外报告 “ Report Exceptions ”对话框 在 AMD Vivado ™ IDE 中 , 选择“ Reports ” → “ Timing ” → “ Report Exceptions ” ( 报告 > 时序 > 例外报告 ) 即可打开“Report Exceptions ”对话框。 从“…

第三届VECCTF-2023 Web方向部分wp

拳拳组合 题目描述&#xff1a;明喜欢保存密钥在某个文件上。请找到秘钥并读取flag文件。 开题&#xff0c;点不完的。源码提示&#xff1a; <!--据说小明很喜欢10的幂次方--> 扫一下看看&#xff0c;应该是有git泄露。 其它一些路由没什么用 git泄露拿下一堆码 pytho…

给卖家的 5 个 TikTok 联盟营销创意

了解如何开始 TikTok 联盟营销不足以让您为 TikTok 商店实施最佳联盟计划。促进您的 TikTok 联盟营销工作。如下&#xff1a; 建立相关受众 为了确保您在 TikTok 联盟营销上的投资没有白费&#xff0c;清楚地了解您的目标受众至关重要。只有了解了这个平台的目标受众&#xf…

最全面的SHEIN开店流程,手把手教你从零起步,轻松开店!

SHEIN作为一家全球性的时尚电商平台&#xff0c;为年轻人提供了更多时尚选择和机会&#xff0c;同时也吸引了众多跨境电商卖家的关注。在5月份&#xff0c;SHEIN推出了第三方卖家平台&#xff0c;为卖家提供了全新的商机和发展赛道。毕竟目前SHEIN平台的流量是非常大的&#xf…

第2章 传输网

文章目录 2.1 传输网概述2.2 SDH传输网2.2.2 SDH的基本网络单元1、终端复用器&#xff08;TM&#xff09;2、分插复用器&#xff08;ADM&#xff09;3、再生中继器&#xff08;REG&#xff09;4、数字交叉连接设备&#xff08;DXC设备&#xff09; 2.2.3 SDH的帧结构2.2.4 …

VSCode新建Vue项目

前言 Vue.js 是一款流行的 JavaScript 前端框架&#xff0c;它可以帮助开发者轻松构建高性能、可扩展的 Web 应用程序。而 VSCode 则是一款功能强大的开源代码编辑器&#xff0c;它提供了许多有用的工具和插件&#xff0c;可以大幅提高开发效率。 在本文中&#xff0c;我们将…

UE4 基础篇十四:自定义插件

文末有视频地址和git地址 一、概念 虚幻里插件都是用C++写的,C++包括.h文件和.cpp文件,.h头文件通常包含函数类型和函数声明,cpp文件包含这些类型和函数的实现, 你为项目编写的所有代码文件都必须位于模块中,模块就是硬盘里的一个文件夹,包含名为“Build.cs”的C#文件…

vue实现el-menu与el-tabs联动

效果图如下&#xff1a; 当标签栏很多的时候效果图如下&#xff1a; 左侧菜单布局 &#xff08;$route.path高亮显示激活路由 :default-active"$route.path"&#xff09; <el-menu:default-active"$route.path"class"el-menu-vertical-demo"b…

PaaS、 IaaS 和 SaaS 的区别

我感觉我有点捂了 iaas&#xff0c;paas&#xff0c;和saas的区别&#xff0c;以及他们啥意思了 简单说就是&#xff0c;一个公司有很多项目&#xff0c;要管理这些项目&#xff0c;每个项目都有很多组成部分需要管理的地方&#xff0c;例如&#xff0c;存储代码&#xff0c;例…

掌握5个关键点,搞定语音识别测试!

现在市面上的智能电子产品千千万&#xff0c;为了达到人们使用更加方便的目的&#xff0c;很多智能产品都开发了语音识别功能&#xff0c;用来语音唤醒进行交互&#xff1b; 另外&#xff0c;各大公司也开发出来了各种智能语音机器人&#xff0c;比如小米公司的“小爱”&#…

UE5 操作WebSocket

插件&#xff1a;https://www.unrealengine.com/marketplace/zh-CN/product/websocket-client 参考&#xff1a;http://dascad.net/html/websocket/bp_index.html 1. 安装Plugings 2.测试websocket服务器 http://www.websocket-test.com/ 3.连接服务器 如果在Level BP里使用&a…

4-11 四个数排序

#include<stdio.h> int main(){int t,a,b,c,d;printf("请输入四个数&#xff1a;");scanf("%d %d %d %d",&a,&b,&c,&d);printf("a%d,b%d,c%d,d%d\n",a,b,c,d);if(a>b){ta;ab;bt;}if(a>c){ta;ac;ct;}if(a>d){ta;a…

通过AppLink把拼多多热门榜单商品同步至小红书

上篇说到AppLink当中定时调度方式如何配置&#xff0c;这次来演示一下&#xff0c;如何把热门榜单信息同步至小红书 1.拉取一个定时器作为触发动作&#xff0c;通过配置定时器调度时间将定时策略配置为每天执行一次 2.触发动作完成后通过好单库获取拼多多每日热门榜单&#xf…

UE5、CesiumForUnreal实现加载GeoJson绘制盒体(Box)功能(StaticMesh方式)

文章目录 1.实现目标2.实现过程2.1 实现原理2.2 具体代码2.3 应用测试2.3.1 材质2.3.2 蓝图测试3.参考资料1.实现目标 与之前基于StaticMesh创建Polygon和Wall类似,本文通过读取本地GeoJson数据,在UE中以staticMeshComponent的形式绘制出盒体Box,支持Editor和Runtime模式,在…

UE4基础篇十五:AI行为树

一、学习完教程后需要掌握知识点 1.1、基础概念: 1.1 行为树:控制并显示AI的决策制定过程 1.2 黑板:可以看做是行为树的创建一些公有变量,外部可以修改行为树黑板的变量值,达到修改行为树状态的逻辑 1.3 环境查询: 获取地图环境中的信息进行一个筛选,查找到所需要的的…

性能小课堂:Jmeter录制手机app脚本!

环境准备&#xff1a;1.手机2.wifi3.Jmeter 具体步骤&#xff1a; 1、启动Jmeter&#xff1b; 2、“测试计划”中添加“线程组”&#xff1b; 3、“工作台”中添加“HTTP代理服务器”&#xff1b; 4、配置代理服务器&#xff1a;Global Settings下面的端口配置&#xff1a…

集成仿真软件 PLEXOS 9.0 授权永久完美

PLEXOS是由能源示例发布的能源市场集成仿真软件。能源市场是一个充满活力和活力的市场&#xff0c;在这个大市场中有各种各样的数据和信息模型。观看每日市场发展和大量数据可能会使您感到困惑&#xff0c;并难以进行未来的投资和分析。使用集成和全面的方法是应对这一挑战的唯…

随笔-事儿就这么个事儿

好久没写了&#xff0c;小A要催更&#xff0c;还答应让我写一下他的经历&#xff0c;这还有啥说的&#xff0c;开整。 1、升级 前段时间登录公司的办公系统处理一个事务申请&#xff0c;发现有个粗体标红的通知&#xff0c;是关于今年的晋升名单公示。进去看了一眼&#xff0…