接口是什么(java接口是干什么用的)
引
对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。
那么,java中抽象类和接口的区别是什么?本文我们将详解Java中接口和抽象类的区别。
抽象类:Java中被abstrac关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为抽象方法,抽象方法是特殊的方法:只有声明,没有具体实现。例如:package com.yiyi.vx.test; // 抽象类 public abstract class Demo { // 抽象方法 public abstract void method1(); }
如果一个类中含有抽象方法,那么这个类一定是抽象类,且必须由abstract关键字对类进行修饰。java语法规定抽象类不能被实例化
---得到结论A.抽象类不能被实例化
刚刚也有提到,当一个类中含有抽象方法时,那这个类一定是抽象类。但是抽象类不一定含有抽象方法。
---得到结论B.包含抽象方法的一定是抽象类,但是抽象类不一定含有抽象方法;
没有抽象方法的抽象类有啥作用呢?
无抽象方法的抽象类HttpServlet源码如下所示:public abstract class HttpServlet extends GenericServlet { protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String protocol = req.getProtocol(); String msg = lStrings.getString("http.method_get_not_supported"); if (protocol.endsWith("1.1")) { resp.sendError(405, msg); } else { resp.sendError(400, msg); } } protected long getLastModified(HttpServletRequest req) { return -1L; } protected void doHead(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { if (DispatcherType.INCLUDE.equals(req.getDispatcherType())) { this.doGet(req, resp); } else { NoBodyResponse response = new NoBodyResponse(resp); this.doGet(req, response); response.setContentLength(); } } protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String protocol = req.getProtocol(); String msg = lStrings.getString("http.method_post_not_supported"); if (protocol.endsWith("1.1")) { resp.sendError(405, msg); } else { resp.sendError(400, msg); } } protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String protocol = req.getProtocol(); String msg = lStrings.getString("http.method_put_not_supported"); if (protocol.endsWith("1.1")) { resp.sendError(405, msg); } else { resp.sendError(400, msg); } } ..... }
可以看出,它的默认方法均为非抽象方法。但它却是实实在在以abstract修饰的抽象类。这么做,就可以让它的子类在继承后,选择性的去复写抽象类的方法,这样就更加灵活和便捷,不需要复写的方法就不会在子类进行一个复写操作。
从这里可以看出,抽象类本身就是为了继承而存在的,如果创建了抽象类而不去继承它复写它的方法的话,那么这个抽象类就白创建了。
---得到结论C.抽象类中的抽象方法的修饰符只能为public或者protected,默认为public;
抽象类还有两个其他特性:
D.一个子类继承一个抽象类,则子类必须实现父类抽象方法,否则子类也必须定义为抽象类;
E.抽象类可以包含属性、方法、构造方法,但是构造方法不能用于实例化,主要用途是被子类调用
接口:Java中接口使用interface关键字修饰,特点为:
a、接口可以包含变量、方法;变量被隐式指定为public static final,使用private修饰编译器会报错。而方法会被隐式地指定为public abstract方法且只能是public abstract方法(用其他关键字,比如private、protected、static、 final等修饰会报编译错误),并且接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法
b、接口支持多继承,即一个接口可以extends多个接口,间接的解决了Java中类的单继承问题;
c、一个类可以实现多个接口;
d、JDK1.8中对接口增加了新的特性:(1)、默认方法(default method):JDK 1.8允许给接口添加非抽象的方法实现,但必须使用default关键字修饰;定义了default的方法可以不被实现子类所实现,但只能被实现子类的对象调用;如果子类实现了多个接口,并且这些接口包含一样的默认方法,则子类必须重写默认方法;(2)、静态方法(static method):JDK 1.8中允许使用static关键字修饰一个方法,并提供实现,称为接口静态方法。接口静态方法只能通过接口调用(接口名.静态方法名)。
如下例子所示:public interface Person{ public static final int a=10; //JDK1.8 default void sayHello(){ System.out.println("Hello World"); } public void say(); } public abstract class Person{ public abstract void say(); public void eat(){}; }
如上述代码所示:
接口只能是功能的定义,而抽象类既可以为功能的定义也可以为功能的实现。
接口与抽象类的区别
相同点
(1)都不能被实例化 (2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。
不同点
(1)接口只有定义,不能有方法的实现,java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。
(2)实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。
(3)接口强调特定功能的实现,而抽象类强调所属关系。
(4)接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public、abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。
甲硝唑片(甲硝唑15种新功效!)甲硝唑片(甲硝唑15种新功效!)便宜又好用的甲硝唑,竟有这么多新用途!甲硝唑被牙痛人士和饱受智齿困扰的人所熟知,它常用于治疗智齿冠周炎。其实,甲硝唑在临床上还有很多用途,接下来我们
甲硝唑片的作用与用途(甲硝唑可用来治什么病?)甲硝唑片的作用与用途(甲硝唑可用来治什么病?)很多人都不知道甲硝唑片是什么,更不用说它的作用了。其实在医学上,它主要用于治疗女性的妇科疾病,除此之外,经过医学的证明,它还能被用于其
厌氧菌有哪些(甲硝唑杀厌氧菌几天会死)这几天,有好几位粉丝不约而同问到飒姐关于妇科常用药物唑类的问题,其中最常见的往往就是俩甲硝唑和克霉唑这两个,都是咱们在治疗妇科疾病,比如阴道炎的时候常用的药物,虽然都是唑,但是它们
牙龈肿了怎么办(不要吃人工牛黄甲硝唑)相信很多人都经历过牙龈肿痛,吃饭的时候都会小心翼翼的,简直就是折磨,那么如何处理牙龈肿胀和疼痛?牙龈肿胀和疼痛的原因是什么?本文将回答引起牙龈肿胀和疼痛的原因以及牙龈肿痛的治疗方法
透明牙套多少钱(门牙过大过长,如何矫正)近年来,不少消费者对口腔健康及美观的点已从基本的口腔医疗需求转化为对牙齿美白牙齿整齐牙齿矫正等颜值需求,推动我国口腔正畸市场迅速扩张。记者发现,随着越来越多的透明牙套品牌在市场上出
牙缝大矫正多少钱(整牙几年后全部反弹了)牙缝太大,吃东西老塞牙,难受牙缝怎么会越来越大了?是因为经常用牙签牙线的缘故吗?我这么穷,是不是因为牙缝太大了?从面相学上来分析,牙缝大是漏财的象征之一,这并没有科学依据,但抛开漏
为什么牙缝越来越大(牙缝疙瘩可以扎破吗)牙缝是指牙与牙之间存的间隙,每个人都有牙缝,正常的情况下,牙缝是非常小的,小到基本可以忽略不计。但是由于种种原因,有的人会发生牙缝变大的情况,这会对我们的整体的美观产生很大影响,而
门牙大怎么办(门牙突出最快矫正方法)许多人的上门牙向外凸出(如下图),实际上是小时候牙齿发育不好造成的。结合多年临床经验,其原因与鼻部咽喉部等病症有关。鼻部病症如鼻炎鼻息肉鼻甲肥大鼻窦炎腺样体肥大等。咽喉部病症如咽扁
牙洞怎么办(门牙正面牙面上有洞)有一个笑话是这样讲的,一位朋友因为牙痛找到牙医,牙医检查他的口腔时惊叫道哎呀!你的牙洞是我见过的最大的,最大的。。这位朋友气愤的说道你不必重复说!牙医回答道我没有,那是牙洞的回音。
门牙多少颗(门牙一回长几个)本号原创内容,未经授权任何平台不得转载,违法必究。芽芽妈还记得芽芽长第一颗牙齿的时候,像个小米粒,小小白白的,看着都可爱。为了让他拥有一口健康漂亮的牙齿,芽芽妈可是做了不少功课,今
补一颗牙齿要多少钱(门牙蛀牙补牙多少钱)二十多年前,有一颗牙出现小窟窿,在区医院进行了修补,多年过去也算完好。最近发现填补的材质陆续往外掉,经熟人介绍,就来到了一家私人诊所。该诊所虽地处乡村,但生意兴隆,患者都是慕名而来
近几年电影投资数据?电影市场如何?能赚钱吗?从近几年的电影票房数据上来看,2013年我国电影总票房才刚刚突破200亿元,2014年全国电影产业总收入达到363。7亿元,同比增长31。5,成为仅次于美国的世界第二大电影市场。2
最近有什么好看的电视剧(近几年口碑好的电视剧)尽管这个暑期档,影院的电影堪称全军覆没,但是电视剧的暑期档却没让人失望,扎堆放映,而且题材也相当丰富,让各类观众都能看得满意,我们一起来看看近期的电视剧表现都如何?第一部理想之城这
今日博时黄金成交价(近几年黄金价格走势图)市场瞬息万变。全球避险情绪推升黄金价格走高。格创下1032购买实物黄金黄金这几年的价格中国黄金官网今日价格。由财经百科网为您收集整理请点击查看详情,基金的最新最全新闻公告。求近几年
8月全国房价涨幅排行近日有关于8月全国房价涨幅排行的问题受到了很多网友们的关注,大多数网友都想要知道8月全国房价涨幅排行的具体情况,那么关于到8月全国房价涨幅排行的相关信息,小编也是在网上进行了一系列
今年秋老虎哪天开始哪天结束近日今年秋老虎哪天开始哪天结束登录了热搜,也是在网上引起了网友们的关注,那么很多小伙伴可能还不清楚具体的情况如何,小编也是在网上查阅了一些信息,那么接下来就分享给大家来了解下今年秋
居众装饰怎么样(装修公司口碑最好的是哪家)本网讯(记者杨亮实习生周训梅)员工是企业最大的财富,健康是员工最大的幸福,这不仅仅是一句口号,为切实关心员工身心健康,为员工撑起健康保护伞,帮助员工全面了解自身健康状况共建和谐企业
kn95与n95的区别(防疫口罩应该买哪种)由于N95称谓简便易记,被广泛口语化,包括目前媒体和很多医院的措辞上也常常用N95指代医用防护口罩,再加上我国的KN95和韩国的KN94(作者没见过实物,本篇不做讨论)导致很多人分
蓝珀多少钱一克(女人戴血珀好还是蓝珀好)本文来自玉雕名家官网要说起近些年来琥珀市场上最大的黑马,那绝非蓝珀无疑。蓝珀,并不是一种单纯的蓝色琥珀,而是一种具有色彩变化性的琥珀。一般来说,蓝珀的体色其实是淡黄色的,但其被光照
蜜蜡什么颜色最好(蜜蜡手串什么颜色最好)(此处已添加小程序,请到今日头条客户端查看)自古以来,蜜蜡深受世界各地之皇室贵族的钟爱,是历代皇族所采用的饰物与宗教之加持圣物。蜜蜡的质感神秘和灵性,让它别具一格,价值也不断攀升。
天然气灶什么牌子好(天然气取暖炉哪些牌子最好用)本次推荐榜由优品牌网大数据系统提供数据支持,综合考虑了品牌的知名度企业资产规模与经营情况员工数量等多项指标。荣登2021年度壁挂炉行业热门品牌推荐榜如下2021年度壁挂炉热门品牌榜
长三角经济区(我国四大经济圈有哪些)长三角经济区(我国四大经济圈有哪些)俯瞰元荡慢行桥。臧辰庚摄俯瞰元荡慢行桥。臧辰庚摄中新网上海5月15日电(记者孙权缪璐)站在上海青浦与江苏吴江交界处的元荡慢行桥上,往前一步是青浦