接口是什么(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等修饰,必须以分号结尾,不带花括号。
翻新机和水货的区别(翻新机和新机的区别)翻新机和水货的区别(翻新机和新机的区别)1。样品机。摆在柜台上供客户试用的,可以说是二手,一个电脑城月处理上万台样机,通过网上渠道或者实体店黑心手段全部流入客户手中。2。翻新机。主
什么是生理盐水(生理盐水和食用盐水区别在哪)什么是生理盐水(生理盐水和食用盐水区别在哪)生理盐水和通俗盐水听起来差不多,两者到底有什么区别?生理盐水在日常糊口中又能起到什么浸染?什么是生理盐水生理盐水又称为无菌生理盐水,其渗
id锁是什么(华为手机id锁怎么解除)苹果ID锁对于果粉朋友来说一定不会陌生,尤其是一些购买二手iPhone的朋友,是否有隐藏ID锁是一个特别需要注意的地方。究竟,苹果ID锁是什么意思?如何看一台iPhone是否有隐藏
微信密码路由器查微信聊天记录(怎么样查找微信删除的聊天记录)微信密码路由器查微信聊天记录(怎么样查找微信删除的聊天记录)微信现已成为咱们最常用的谈天东西,由于微信的运用率非常高,咱们也常常会拾掇一下微信谈天记载和其他软件的缓存文件来腾出手机
王宁当选福建省省长近日有关于王宁当选福建省省长的问题受到了很多网友们的关注,大多数网友都想要知道王宁当选福建省省长的具体情况,那么关于到王宁当选福建省省长的相关信息,小编也是在网上进行了一系列的信息
什么是防卫过当行为近日什么是防卫过当行为登录了热搜,也是在网上引起了网友们的关注,那么很多小伙伴可能还不清楚具体的情况如何,小编也是在网上查阅了一些信息,那么接下来就分享给大家来了解下什么是防卫过当
凯是多少钱(凯隐)洋子哥,鸽子洋,大家好我是每日一鸽的洋子哥,想要了解最新主播趣闻最新电竞资讯最新版本资讯,就来看洋子哥写的文章吧!黎明黑夜皮肤降临,凯隐此款皮肤沦为最差皮肤在上个系列的黑夜黎明皮肤
fgo福袋多少钱(fgo什么时候有福袋)悄悄说一句(武藏亲真可爱!)FGO又陪伴各位御主走过了一年,新一年的新年活动也随之而来,在2021年1月1日,新年活动估计就会真正开始了,接下来在这里带大家看一下这次的活动内容,首
鱼离开水为什么会死(鱼放在水里为什么会死)大多数鱼会因为离开水体后无法呼吸而死亡。其实鸟可能会从空中掉下来摔死,鱼也可能会在水中淹死。溺水一般指在水中窒息,用肺呼吸的动物不能在水中呼吸,会因缺氧而窒息。但是鱼大多数不是靠肺
主持台词(2019年会必备主持人台词开场白)主持台词(2019年会必备主持人台词开场白)一场精彩的宴会或活动,离不开主持人精彩动人主持。而主持人的成功有离不开优秀专业的主持稿。一般的主持稿包括台词开场白串词大全台本结束语等。
规划求解怎么用(3个数规划求解要多久)Excel处理数据的能力非常强大,甚至能在有各种条件限制下轻松帮我们求解,1。规划求解功能默认不会开启,需要手动打开,首先打开选项2。打开加载项3。在右侧下方,选择excel加载项
别墅怎么装修(3万元简装修大全)别墅装修是一件专业性极强的复杂工程,所以很多装修业主在装修之前都想了解一下别墅装修经验,可是网上的别墅装修经验简直是五花八门,涵盖面太广太泛,让人找不着重点,其实只要了解几条重要的
什么是小房缺(筛孔型小房缺)1。什么是房间隔缺损?房间隔缺损简称房缺。我们正常人的心脏有4个心腔分别是左心房右心房左心室右心室。两个心房之间有个间隔叫房间隔,就像两个屋子中间有一堵墙一样,正常人的这堵墙是完整
卧室怎么布置(小房间怎样布置好看又简单)正常来说,比较舒服卧室的大小,一般合理的面积是在1520平米左右而面积在1015平米的卧室,如果空间是方正的话,一般来说常规的卧室功能与基本动线也还是可以保障的而当卧室的面积被压缩
温开水是多少度(60度的水烫嘴吗)喝太烫的水,烫伤了遭罪,如果长期饮用过烫的热水还有更多危害!柳叶刀肿瘤学的评估报告指出土耳其及南美洲国家(并点名中国)这些地区的人们,通常习惯饮用65或70以上非常热的水咖啡或茶,
孕妇食谱分阶段营养调理(孕期饮食各个阶段各有讲究)孕妇食谱分阶段营养调理(孕期饮食各个阶段各有讲究)怀孕期间该吃什么是每个孕妈妈都特别关心的一件事情,什么东西可以吃,可以给胎儿提供足够的营养。什么东西不可以吃,吃了不利于胎儿生长甚
孕妇饮食注意(孕妇在饮食方面需要注意哪些事项?)孕妇饮食注意(孕妇在饮食方面需要注意哪些事项?)十月怀胎是每个准妈妈辛苦又幸福的经历,在这个过程中科学合理的饮食,不仅关系到准妈妈的健康,也关系到宝宝的健康。因此,孕妇和胎儿的合理
拔火罐的作用(拔火罐有哪些作用)拔火罐的作用(拔火罐有哪些作用)虽然我们的生活水平在不断的提高,但是随着我们年龄的增长,人的身体部位往往会出现一些小的毛病,像腰腿酸痛,疲劳过度等。但是人们又往往不愿意去医院进行就
拔火罐的作用(拔火罐有哪些作用)拔火罐的作用(拔火罐有哪些作用)拔火罐是中医传统理疗的一种手法,几乎每个家庭都有一套拔罐设备,身体疲乏酸痛时便会拔一拔火罐,但是拔火罐还是有很多讲究的,今天我们就来聊一聊拔火罐有哪
拔火罐注意(拔火罐的五个注意事项)拔火罐注意(拔火罐的五个注意事项)拔罐是以罐为工具,利用燃火抽气等方法产生负压,使之吸附于体表,造成局部瘀血,以达到通经活络行气活血消肿止痛祛风散寒等作用的疗法。拔罐疗法在中国有着
嗓子化脓怎么办(一勺白醋治好咽喉炎)打败化脓性扁桃体炎的的制胜法宝是及时正确诊断抗生素治疗。抗生素治疗,首选青霉素类,青霉素过敏者可选用头孢霉素或阿奇霉素等。初始治疗23天后病情无好转者,应分析其原因,或根据药敏试验
保定属于哪里(保定最新疫情)根据河北省卫生健康委公布的新型冠状病毒感染的肺炎疫情,截至2月2日24时,保定市累计确诊病例13例,其中2例已于2月2日治愈出院。目前密切接触者均已采取了隔离措施。现将保定市13例