前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中接口与抽象类的区别

Java中接口与抽象类的区别

作者头像
赵哥窟
发布2020-01-02 23:41:59
7850
发布2020-01-02 23:41:59
举报
文章被收录于专栏:日常技术分享日常技术分享
一、抽象类

在Java中,被关键字abstract修饰的类称为抽象类;被abstract修饰的方法称为抽象方法,抽象方法只有方法声明没有方法体。 抽象类有以下几个特点: 1、抽象类不能被实例化,只能被继承。 2、包含抽象方法的类一定是抽象类,但抽象类不一定包含抽象方法(抽象类可以包含普通方法)。 3、抽象方法的权限修饰符只能为public或者protected,默认情况下为public。 4、一个类继承于一个抽象类,则子类必须实现抽象类的抽象方法,如果子类没有实现父类的抽象方法,那子类必须定义为抽象类。 5、抽象类可以包含属性、方法、构造方法,但构造方法不能用来实例化对象,只能被子类调用。

二、接口

接口可以看成是一种特殊的类,只能用interface关键字修饰。接口是提供给别人调用的。Java中的接口具有以下几个特点: 1、接口中可以包含变量和方法,变量被隐式指定为public static final,方法被隐式指定为public abstract(JDK 1.8之前); 2、接口支持多继承,即一个接口可以继承(extends)多个接口,间接解决了Java中类不能多继承的问题; 3、一个类可以同时实现多个接口,一个类实现某个接口则必须实现该接口中的抽象方法,否则该类必须被定义为抽象类; 4、JDK 1.8中对接口新增了两个特性: (1)默认方法(default method):JDK 1.8允许给接口添加非抽象的方法实现,但必须使用default关键字修饰;定义了default的方法可以不被实现子类所实现,但只能被实现子类的对象调用;如果子类实现了多个接口,并且这些接口包含一样的默认方法,则子类必须重写默认方法。 (2)静态方法(static method):JDK 1.8中允许使用static关键字修饰一个方法,并提供实现,称为接口静态方法。接口静态方法只能通过接口调用(接口名.静态方法名)。 5、在JDK 1.9中,再次对接口进行了增强,可以实现private method和private static method。因为JDK 1.8中可以对接口中的方法进行实现,那么当我们不希望实现的方法暴露给外部时,则可以将方法定义为private。

三、接口与抽象类的区别

1、抽象类中可以包含普通方法,但接口中只能包含public abstract方法(JDK 1.8之前); 2、抽象类中的成员变量没有访问权限的限制,但接口中的变量只能被public static final修饰; 3、一个接口可以继承多个接口,但一个类只能有一个父类,类可以实现多个接口; 4、抽象类是对一类事物的抽象,接口则是对行为的抽象。一个类继承一个抽象类代表“是不是”的关系,而一个类实现一个接口则表示“有没有”的关系。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、抽象类
  • 二、接口
  • 三、接口与抽象类的区别
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档