接口和抽象类有什么区别?

转载 2017年05月19日 23:16:18
接口和抽象类有什么区别?
接口(interface)和抽象类(abstract class)都是支持抽象类定义的两种机制。
接口是公开的,里面不能有私有变量和方法;接口是指一个方法的集合,接口中所有方法都没有方法体,在Java语言中接口是通过关键字interface来实现的。
抽象类可以有私有方法或私有变量,如果一个类中包含抽象方法,那么这个类就是抽象类。在Java语言中,可以通过把类或者类中的某些方法声明为abstract来表示一个类是抽象类,其中abstract只能用来修饰类或方法,不能修饰属性。
包含一个或多个抽象方法的类必须声明为抽象类,抽象类可以声明方法的存在而不去实现它,被声明为抽象的方法不能包含方法体。在抽象类的子类中,实现方法必须含有相同的或更低的访问级别(public>protected>private)。抽象类在使用过程中不能被实例化,但是可以创建一个对象使其指向具体子类 的一个实例。抽象类的子类为父类中所有的抽象方法提供具体的实现,否则,它们也是抽象类。
接口可以被看作是抽象类的变体,接口中所有的方法都是抽象的,可以通过接口来间接的实现Java的多继承。接口中的成员变量都是static finall 类型。
接口和抽象类的相同点:
1、都不能被实例化;
2、接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能被实例化;

接口和抽象类的不同点:
1、接口只有定义,不能有方法的实现,而抽象类可以有定义与实现,即其方法可以在抽象类中可以在抽象类中被实现;
2、实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但只能继承一个抽象类,因此,使用接口能够间接的实现多继承的目的。
3、接口强调特定功能的实现,其设计理念是“has-a”关系,而继抽象类强调的是所属关系,其设计理念为“is-a”关系。
4、接口中定义的成员变量默认为public static final,只能够有静态的不能被修改的数据成员变量,而且必须要赋初值;所有的成员方法都是public、abstract的,而且只能被这两个关键字修饰。而抽象类可以有自己的数据成员变量,也可以有非抽象的成员方法,而且,抽象类中的成员变量默认为default,当然也可以被定义为private、protect、public,这些成员变量可以在子类中被重新定义,也可以被重新赋值,抽象类中的抽象方法不能用private、static、synchronized和native邓访问修饰符修饰,同时方法必须以分号结尾(不能有方法体,不能带花括号{ })。所以当功能需要累积时,使用抽象类;不需要累积时,使用接口;
5、接口被运用于实现比较常见的功能,便于日后维护或者添加删除方法,而抽象类更倾向于充当公共类的角色,不适用于日后重新对里面的代码进行修改。

抽象类(abstract class)和接口(Interface)的区别

前言 抽象类(abstract class)和接口(Interface)是Java语言中对于抽象类定义进行支持的两种机制,赋予了Java强大的面向对象能力。二者具有很大的相似性,甚至可以相互替换,因...
  • aptentity
  • aptentity
  • 2017年04月01日 11:53
  • 1475

抽象类(abstract class)与接口(interface)的异同

抽象类:包含抽象方法的类就是抽象类 接口:指抽象方法的集合,方法不包含方法体相同点: 都不能被实例化 接口的实现类或者抽象类的子类都必须实现了接口或抽象类中的方法后才可以被实例化 不同点: 接口只有...
  • aym_fuhong
  • aym_fuhong
  • 2016年09月05日 20:07
  • 1834

JAVA中接口和抽象类的区别?

原文:http://blog.csdn.net/sunboard/article/details/3831823 1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实...
  • u010355144
  • u010355144
  • 2015年04月08日 18:04
  • 555

java中抽象类和接口之间的区别和关系

首先抽象类归根结底还是属于类,对于抽象方法,是只能存在于抽象类中的,我们无法再一个非抽象的类中声明一个抽象方法,其次抽象方法只需要声明,并不需要事先。当我们要写一个抽象类的时候只需要在类的前面声明为a...
  • ysayk
  • ysayk
  • 2016年06月12日 23:08
  • 1201

抽象类(abstract class)和接口(interface)有什么异同?【Java面试题】

1、抽象类可以包含非抽象的方法,而接口中的方法必须是抽象的。 2、继承抽象类在Java语言体系中体现一种继承关系,在合理的继承关系中,父类和派生类比如按存在is-a关系。而实现接口则体现一种has-a...
  • L_BestCoder
  • L_BestCoder
  • 2017年08月28日 12:34
  • 401

抽象类(abstract class)和接口(interface)有什么异同?

抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。接口比抽象类更加抽象,因为...
  • louyongfeng3613
  • louyongfeng3613
  • 2015年07月27日 22:45
  • 392

java中抽象类(abstract class)和接口(interface)

抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。 一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。反之,一个全部实现了的类...
  • u010575093
  • u010575093
  • 2016年02月24日 15:38
  • 642

简单介绍java抽象类和接口的区别

抽象类:在面向语言的概念中,所有的对象都是通过类来描绘的,但是反过来却不是这样,如果一个类中没有足够的信息去描绘一个具体的对象,那么这个类就是抽象类。 接口:不同类的对象对同一行为产生不同的行为结果...
  • u012402177
  • u012402177
  • 2016年02月24日 10:18
  • 612

详细解析Java中抽象类和接口的区别 abstract class和interface

详细解析Java中抽象类和接口的区别 abstract class和interface 2007年05月13日 22:07     在Java语言中, abstract c...
  • nz360
  • nz360
  • 2015年04月26日 23:56
  • 539

以C#为例,简述抽象类与接口的区别

以C#为例,简述抽象类与接口的区别 区别一: 抽象类能够被继承,子类和抽象类是IS A的关系;而接口不能被真正的继承,接口只能实现。实现了接口的类和接口是CAN DO的关系。 例如:publ...
  • lizhengnanhua
  • lizhengnanhua
  • 2012年12月18日 01:09
  • 1742
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:接口和抽象类有什么区别?
举报原因:
原因补充:

(最多只允许输入30个字)