博客
关于我
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/

你可能感兴趣的文章
nginx负载均衡的5种策略(转载)
查看>>
nginx负载均衡的五种算法
查看>>
Nginx负载均衡详解
查看>>
Nginx负载均衡(upstream)
查看>>
Vue中删除el-table当前行的方法
查看>>
nginx转发端口时与导致websocket不生效
查看>>
Nginx运维与实战(一)-Nginx不同场景使用方法
查看>>
Nginx运维与实战(二)-Https配置
查看>>
Nginx部署_mysql代理_redis代理_phoenix代理_xxljob代理_websocket代理_Nacos代理_内网穿透代理_多系统转发---记录021_大数据工作笔记0181
查看>>
nginx部署本地项目如何让异地公网访问?服务器端口映射配置!
查看>>
Nginx配置HTTPS服务
查看>>
Nginx配置https的一个误区(导致404错误)
查看>>
Nginx配置Https证书
查看>>
Nginx配置http跳转https
查看>>
Nginx配置ssl实现https
查看>>
nginx配置ssl证书https解决公网ip可以访问但是域名不行的问题
查看>>
Nginx配置TCP代理指南
查看>>
NGINX配置TCP连接双向SSL
查看>>
Nginx配置——不记录指定文件类型日志
查看>>
nginx配置一、二级域名、多域名对应(api接口、前端网站、后台管理网站)
查看>>