博客
关于我
Java----多态+抽象类+抽象方法+接口
阅读量:653 次
发布时间:2019-03-15

本文共 2628 字,大约阅读时间需要 8 分钟。

Java基础创作日记 Day05

时间:2021年2月7日下午 阴
前天的总结少了点东西,今天补充上
现在是2021年2月8日 晚上,摸了一天鱼,今晚补完

文章目录

抽象方法+抽象类+接口

抽象方法

当我们创建一个父类,父类的一些方法需要后代进行重写,此时父辈不需要写入任何代码,此时我们就可以把这些方法不写方法体,设置为抽象方法,然后用后代来重写这个方法

语法:
abstract void 方法名();

抽象类

含有抽象方法的类必须要用abstract修饰,用abstract修饰的类叫做抽象类,抽象类可以不含有抽象方法

语法:abstract class 类名{}
如:
在这里插入图片描述
抽象类不能被实例化,他需要被继承,然后由后代来实现,后代可以实例化
后代必须实现抽象类中的抽象方法

接口

当一个抽象类中的所有方法都是抽象的则可以把他定义成一个接口

接口中可以不含有抽象方法
需要用interface关键字
语法:interface 类名{}

实现接口的方法

和后代实现抽象方法不同的是,实现接口需要用implements关键字,而不是extends继承

语法:class 类名 implements 接口名{}
如:在这里插入图片描述
同样,实现接口的类必须实现接口中的所有抽象方法

接口中我们设置的变量,会自动默认使用public static final来修饰

用抽象类实现接口的时候,可以不实现接口中的所有抽象方法

一个类可以同时实现多个接口
如:
在这里插入图片描述
中间用逗号隔开

而且,接口中的方法和变量我们不用加abstract修饰符,因为系统会自动默认其中的方法用abstract修饰,变量默认使用public abstract来修饰

接口作用和理解

可以类比我们现实中的例子

如USB接口:
接口可以用来实现一个大种类的各种细化的功能,可以类比于电脑上的USB接口,我们先来分析这种的USB接口的工作原理,首先提供一个共用的接口,里面提供固定的线,来使开发商根据对应的线来实现和接口兼容的产品,比如鼠标、移动磁盘,这两个都可以正确的兼容电脑上的USB接口,他们可以为电脑提供不同的功能。
类比于代码中的接口:
我们代码接口中的几个抽象方法就类似于USB接口中的线,这就是创建接口,我们可以根据这些抽象方法来实现各种功能,来提供给其他的对象使用,这就是实现接口。
接口也可继承其他的接口

多态

什么是多态?

代码中,在同一个方法中,由于传入参数类型的不同而导致执行效果各异的现象就是多态

在代码中的展现方式:
首先,在Java中为了实现多态,允许一个父类类型的变量来引用一个子类类型的对象。如:
在这里插入图片描述
然后,我们定义一些子类来实现父类的一些方法,然后在主函数中创建一个接受父类对象参数的方法,方法中是要实现的父类方法,然后传入参数,代码会根据传入参数引用对象的不同来进行不同的实现方法

多态的实现

例:

在这里插入图片描述
我们先写一个接口,来写入抽象方法,然后写两个子类来对抽象方法进行不同的实现,然后在main中用父类类型来引入两个子类的对象,然后创建一个静态函数接收引用子类对象的父类类型变量,其中调用父类的抽象方法,然后我们传入参数,可以看到,传入不同对象类型的变量,会变现出对应动作

对象类型转换的注意事项

因为在多态中涉及到将子类对象当做父类类型使用的情况,所有会有一些注意事项

  1. 将子类对象当做父类使用时不需要任何显式的声明,直接父类类名 变量名=new 子类的构造函数
  2. 引用子类的父类类型变量可以调用父类中的方法,但是,子类中的方法他不能调用

instanceof

作用:判断一个对象是否是某个类(或接口)的实例或者其子类的实例

用法:
对象(或者对象引用变量) instanceof 类(或接口)
如:
在这里插入图片描述

接口的再理解和使用

接口的作用就是把使用接口的类和实现接口的类分开,实现接口的类不必要关心哪个类去使用,而使用接口的类也不用关心哪个类实现的接口,由接口将他们联系在一起。

接口一般和多态联合起来使用,接口重要的特征是实现了多样性,接口可以使多个完全不相干的类产生以多态为基础的联系。

一个正确使用接口的例子

还是上面USB接口的例子:

我们现在有两样东西,1.一个可用于USB接口上的电子产品 2.一个主板
我们要把这个东西安装到主板上,而且主板要准确的获得到电子产品的名称和用法
第一步:
设计USB接口(就是规定一下USB接口该实现的功能)

  1. 可以展现电子产品的名称
  2. 可以展现电子产品的功能
interface USB{   	String Name(); //展现名称	void function(); //展现功能}

第二步:

根据USB接口设置电子产品

class electronic_product implements USB{   	private String name="我可以是鼠标可以是键盘"; //电子产品的名称属性	void setName(String name){     //可设置对象的名称		this.name=name;	}	public void function(){      //电子产品的功能		System.out.println("我可以打字也可活动光标");	}	public String Name(){      //可以展现电子产品的名称		return name;	}};

第三步:

创建主板(用于使用USB接口)

class main_board{   	USB usb;	//在主板上创建使用USB的位置	void setVidioCard(USB usb){   	//把USB接口连线到主板中,使其可以使用,把我们接入的电子产品传入到形参中,即,把电子产品和主板连接起来	//也是多态的一种使用		this.usb=usb;	}	void run(){    //开机运行		System.out.println("开机");		System.out.println(usb.Name());	//展现电子产品的名称		usb.display();	//展现电子产品的功能		System.out.println("成功运行");	}}

以上,主板在使用的时候只需要考虑接口中含有的方法,然后电子产品在创建的时候,也只需要考虑接口中含有的方法就行。

简单来说,接口起到了链接两个类的作用,使Java更具有多样性。

转载地址:http://ilbmz.baihongyu.com/

你可能感兴趣的文章
NIFI1.21.0_java.net.SocketException:_Too many open files 打开的文件太多_实际操作---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_插入时如果目标表中已存在该数据则自动改为更新数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0058
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0_Postgresql和Mysql同时指定库_指定多表_全量同步到Mysql数据库以及Hbase数据库中---大数据之Nifi工作笔记0060
查看>>
NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
查看>>
NIFI1.21.0最新版本安装_配置使用HTTP登录_默认是用HTTPS登录的_Https登录需要输入用户名密码_HTTP不需要---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增加修改实时同步_使用JsonPath及自定义Python脚本_03---大数据之Nifi工作笔记0055
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
查看>>
NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现update数据实时同步_实际操作05---大数据之Nifi工作笔记0044
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
查看>>