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

接口和抽象类之间到底有什么区别? java


#1楼

让咱们再次解决这个问题: 框架

首先要知道的是1/1和1 * 1的结果相同,但这并不意味着乘法和除法相同。 显然,他们之间保持着良好的关系,可是请注意大家俩是不一样的。 spa

我将指出主要的区别,其他的都已经解释了: 对象

抽象类对于建模类层次结构颇有用。 在任何要求乍看之下,咱们对到底什么是待建部分透明的,但咱们知道如何构建。 所以,您的抽象类就是您的基类。 继承

接口可用于让其余层次结构或类知道个人能力。 当你说我有能力的时候,你必须具有这种能力。 接口会将其标记为类必须实施相同的功能。 接口


#2楼

若是要在继承层次结构中提供多态行为,请使用抽象类。 get

当您想要彻底不相关的类的多态行为时,请使用一个接口。 class


#3楼

一些重要的区别: 变量

以表格的形式: 扩展

区别

正如javapapers的Joe所说

1.主要区别在于Java接口的方法是隐式抽象的,没法实现。 Java抽象类能够具备实现默认行为的实例方法。

2. Java接口中声明的变量默认为final。 抽象类可能包含非最终变量。

3. Java接口的成员默认状况下是公共的。 Java抽象类能够具备类成员的经常使用风格,例如private,protected等。

4.Java接口应使用关键字“ implements”来实现; Java抽象类应使用关键字“ extends”进行扩展。

5.一个接口只能扩展另外一个Java接口,一个抽象类能够扩展另外一个Java类并实现多个Java接口。

6.Java类能够实现多个接口,但只能扩展一个抽象类。

7,接口绝对是抽象的,不能实例化; Java抽象类也没法实例化,可是能够在存在main()的状况下调用。

8,与Java抽象类相比,Java接口比较慢,由于它须要额外的间接调用。


#4楼

在一个接口中,全部方法都必须仅是定义,而不能实现单个方法。

可是在抽象类中,必须有一个仅具备定义的抽象方法,可是其余方法也能够在具备实现的抽象类中...


#5楼

继承用于两个目的:

  • 容许对象将父类型数据成员和方法实现视为本身的。

  • 容许对一种类型的对象的引用被指望使用超类型对象的代码使用。

在支持广义多重继承的语言/框架中,一般几乎不须要将类型分类为“接口”或“抽象类”。 可是,流行的语言和框架将容许一种类型将另外一种类型的数据成员或方法实现视为其自身,即便它们容许一种类型能够替换为任意数量的其余类型。

抽象类可能具备数据成员和方法实现,但只能由不从任何其余类继承的类继承。 接口几乎对实现它们的类型没有任何限制,可是不能包含任何数据成员或方法实现。

有时候,将类型替换为许多不一样的东西颇有用; 在其余状况下,对象将父类型的数据成员和方法实现视为本身的对象颇有用。 在接口和抽象类之间进行区分能够在最相关的状况下使用每种功能。

相关文章
相关标签/搜索