Java中的接口和抽象类。
接上篇。
Animals(动物)类在现实生活中找不出这样的一个实例,没有一个叫动物的动物。他的子类,譬如像狗,鸟,是具体的一个实例,但是动物类只是一个抽象的概念。一个认知上的抽象。那这样的类就为抽象类。
那将Animals类 设置为抽象类,规定动物的基本属性,基本方法,抽象方法,那继承他的子类就必须实现父类的抽象方法,若不实现,那继承的这个类也必须设置为抽象类。
抽象类中可以有构造函数,属性的权限可以为private,public, protected.,含有抽象方法的类必须声明为抽象类。
抽象函数在抽象类中只是声明,具体实现交给子类。
eg
在上面的例子上继续改造,将Animals中的eat()方法设置为抽象函数。在子类中去实现它。
子类
接口
接口是一组规范,是一个标准。它不表示事务,接口是给类用的。
接口作用。 1:一种规范。
2:解耦合,降低耦合度。
接口的现实举例,比如 人要遵守法律。。人就是一个类,法律就是一个接口。
类可以实现多个接口,这就相当于人要遵守多个规章制度。
接口之间可以多继承,这就相当于所有的法律都是宪法之下的。
比如,上面的例子,我想要有飞的这个动作。那我不能在Animals中添加飞这个动作,要是这样的话,那继承他的子类都有飞这个动作,那继承它的Dog类也就有飞的动作,这样的逻辑违背了现实逻辑,是不成立的,那我也可以在每个类中单加这个动作,也能实现,但是接口还有一个功能就是降低耦合度,这样做没有降低耦合。为了达到这个目的,那我就把飞这个动作做成几个接口,那个类需要飞这个动作只需要实现它就行。
接口不能实例化对象,但是可以创建接口引用指向实现这个接口的类的实例化对象。
接口表示规范,所以它里面的属性都是public static final
方法都是abstract。
没有构造函数。
接口是一个特殊的抽象类。
eg:
定义一个飞的接口
bird实现Fly接口
一个类可以实现多个接口..
在上面的例子上在添加一个下蛋接口.
bird实现这个接口
接口支持多继承,和类继承基本差不多。
接口更多的有点偏一种动作。偏行为,而类更多的是特征,
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java并发容器大合集
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/80289295 概述 java.util包中的大部分容器都是非线程安全的,若要在多线程中使用容器,你可以使用Collections提供的包装函数:synchronizedXXX,将普通容器变成线程安全的容器。但该方法仅仅是简单地给容器使用同步,效率很低。因此并发大师Doug Lea提供了java.util.concurrent包,提供高效的并发容器。并且为了保持与普通的容器的接口一致性,仍然使用util包的接口,从而易于使用、易于理解。 PS:问题:synchronizedXXX究竟对容器做了什么从而能达到线程安全的目的? 类图 List和Set JUC包中List接口的实现类:CopyOnWriteArrayList CopyOnWriteArrayList是线程安全的ArrayList JUC包中Set接口的实现类:CopyOnWriteArraySet、ConcurrentSkipListSet CopyOnWrite...
- 下一篇
nodejs爬虫获取漫威超级英雄电影海报
昨天去看了《复联3》的首映,当我提前15分钟进入影院的时候, 看到了粉丝们取票的长队, 顿时有一种跨年夜的感觉... 最近看了node爬虫的一些知识, 这里用node爬取一下漫威官网的电影海报! marvel // https://marvel.com/movies/all const request = require('superagent') const cheerio = require('cheerio') const fs = require('fs-extra') const path = require('path') let url = 'https://marvel.com/movies/all' // 获取图片url和图片名字 async function getUrlAndName(){ // 用于存储返回值 let imgAddrArray = [] // 请求资源 const res = await request.get(url) // 将获取的html, 转换为资源符$, 相当于python中的xpath语法的etree过程 const $ = chee...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Mario游戏-低调大师作品
- 2048小游戏-低调大师作品
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Red5直播服务器,属于Java语言的直播服务器