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

转载 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、接口被运用于实现比较常见的功能,便于日后维护或者添加删除方法,而抽象类更倾向于充当公共类的角色,不适用于日后重新对里面的代码进行修改。

抽象类和接口有什么异同

接口和抽象类的相同点: 1.都不能被实例化 2.接口的实现类或者抽象类的子类都只有实现了接口或者抽象类中的方法后才能被实例化。 接口和抽象类的不同点: 1.接口只有定义,其方法不能在接...
  • XiaopinOo
  • XiaopinOo
  • 2017-09-07 18:41:36
  • 830

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

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

接口和抽象类的异同——加入Java8的特性。

Java中,抽象类和接口有相似的地方。下面我们就来细说说接口和抽象类的异同。首先是相同的地方:1. 接口和抽象类都能定义方法和属性。 2. 接口和抽象类都是看作是一种特殊的类。大部分的时候,定义的...
  • a907691592
  • a907691592
  • 2016-06-06 20:11:00
  • 3530

接口和抽象类的区别---相信你看完不会再混淆了

一、引言 我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一...
  • wenwen091100304
  • wenwen091100304
  • 2015-09-12 11:09:23
  • 23945

面试题--抽象类和接口的区别

下述说法中抽象类与接口的区别正确的有哪些? 正确答案: A B C A.抽象类中可以有普通成员变量,接口中没有普通成员变量。 B.抽象类和接口中都可以包含静态成员变量。 C.一个类可以实现多...
  • Mrzhoug
  • Mrzhoug
  • 2016-06-10 09:38:43
  • 2447

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

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

java中抽象类和接口的三点区别

一个类可以实现多个接口,但却只能继承最多一个抽象类 抽象类可以包含具体方法;接口的所有方法都是抽象的 抽象类可以声明和使用字段;接口则不能,但可以创建静态的final常量 抽象类中的方法可以是p...
  • sundujing
  • sundujing
  • 2015-11-06 16:36:02
  • 1201

接口是什么,和抽象类有什么区别

好的面向对象编程要求类设计人员隐藏那些不需要类的使用人员了解的信息。对于 Java 编程语言,这样的访问可以通过使用关键字 private, protected, 和 public来控制。这些关键...
  • diy_888
  • diy_888
  • 2007-02-07 16:34:00
  • 1575

java笔试题目--Java基础面试题

  • 2010年07月28日 10:55
  • 27KB
  • 下载

知识点4:接口与抽象类有何区别

从语法层面而言,接口和抽象类的区别如下:1.抽象类可以提供成员方法的实现细节,而接口中只能存在抽象方法(默认 public abstract)2.抽象类中的成员变量可以是多种类型,而接口中的成员变量必...
  • dengminghli
  • dengminghli
  • 2017-05-01 17:13:19
  • 2363
收藏助手
不良信息举报
您举报文章:接口和抽象类有什么区别?
举报原因:
原因补充:

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