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

爱编程的小灰灰 爱编程的小灰灰     2022-11-30     787

关键词:

1. 接口和抽象类的区别

抽象类可以存在普通成员函数,而接口中只能存在public abstract方法

抽象类中的成员变量客户是各种类型的,而接口中的成员变量只能是public static final类型的

抽象类只能继承一个,接口可以实现多个

 

接口的设计目的,是对类的行为进行约束(更准确的说是一种"有"约束,因为接口不能规定类不可以有什么行为),也就是提供一种机制,可以强制要求不同的类具有相同的行为。它只约束了行为的有无,但不对如何实现行为进行限制。

而抽象类的设计目的,是代码复用。当不同的类具有某些相同的行为(记为行为集合A),且其中一部分行为的实现方式一致时(A的非真子集,记为B),可以让这些类都派生于一个抽象类。在这个抽象类中实现了B,避免让所有的子类来实现B,这就达到了代码复用的目的。而A减B的部分,留给各个子类自己实现。正是因为A-B在这里没有实现,所以抽象类不允许实例化出来(否则当调用到A-B时,无法执行)。

抽象类是对类本质的抽象,表达的是is a 的关系,比如:绵羊is a 羊。抽象类包含并实现子类的通用特性,将子类存在差异化的特性进行抽象,交由子类去实现。

而接口是对行为的抽象,表达的是like a 的关系。比如:鸟 like a 飞行器(向飞行器一样可以飞),但其本质上是is a 鸟。接口核心是定义行为,即实现类可以做什么,至于实现类主体是谁、是如何实现,接口并不关心。

使用场景:当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。

抽象类的功能要远超过接口,但是,定义抽象类的代价高。因为高级语言(从实际设计上来说也是)每个类只能继承一个类。在这个类中,你必须继承或编写出其所有子类的所有共性。虽然接口在功能上会弱化许多,但是它只针对一个动作的描述。而且你可以在一个类中实现多个接口。在设计阶段会降低难度。

 

面试题分类

1.Java篇(1).Java基础知识java中==和equals和hashCode的区别int与integer的区别抽象类的意义接口和抽象类的区别能否创建一个包含可变对象的不可变对象?谈谈对java多态的理解String、StringBuffer、StringBuilder区别泛型中extends和super的区别进程... 查看详情

java常用面试题

1、数组有没有length()这个方法?String有没有length()这个方法?数组没有length()这个方法,有length的属性。String有有length()这个方法。 2、抽象类和接口有什么区别?抽象类可以有方法体;接口内必须都是抽象方法,不存在方法... 查看详情

(转)java接口与抽象类的区别

很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题。本文我们将仔细讨论这些话题。 在讨论它们之间的不同点之前,我们先看看抽象类、接口各自的特性。... 查看详情

java常用面试题

1、数组有没有length()这个方法?String有没有length()这个方法?数组没有length()这个方法,有length的属性。String有有length()这个方法。 2、抽象类和接口有什么区别?抽象类可以有方法体;接口内必须都是抽象方法,不存在方法... 查看详情

java面试题(代码片段)

面向对象的三个特征封装,继承,多态,这个应该是人人皆知,有时候也会加上抽象。多态的好处允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用)。... 查看详情

java基础+面试题

==和equals方法究竟有什么区别?1).equals方法比较两个对象的内容2).==比较两个对象是否是同一对象,或者说对象在内存中的首地址是否相同应用:(1)对于基本数据类型,“==”比较的是两者的值是否相等(2)对于引用数据类型... 查看详情

2022java面试题道通科技

1.抽象类与接口的区别,接口可以继承多个父接口??抽象类能不能继承多个父接口?接口中的抽象方法必须是抽象方法吗?抽象类的方法中必须是抽象方法吗?2.jdk和jvm和jar的区别?java的编译器有哪些?JDK:用来写代码的。里... 查看详情

java面试题

1、数组有没有length()这个方法?String有没有length()这个方法?数组只有length属性,表示的是数组的长度。而且这个属性可以理解为止一个常量,一旦数组被产生,我们可以得到length的值,但不能改变。 返回的是字符串的长度... 查看详情

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

抽象类与接口的区别,这是一个经常被问到面试题,区别主要有以下几点,我们可以从几个方面进行分析:(一)继承方面:(1)抽象类只能单继承;接口可以多实现(二)成员属性方面:(1)抽象类中可以有普... 查看详情

java面试题(代码片段)

面试宝典构造器Constructor是否可被override?重载和重写的区别Java面向对象编程三大特性String为什么是不可变的?String、StringBuffer和StringBuilder的区别是什么?自动装箱与拆箱接口和抽象类的区别是什么?构造方法有哪些特性?... 查看详情

java面试题(代码片段)

面试宝典构造器Constructor是否可被override?重载和重写的区别Java面向对象编程三大特性String为什么是不可变的?String、StringBuffer和StringBuilder的区别是什么?自动装箱与拆箱接口和抽象类的区别是什么?构造方法有哪些特性?... 查看详情

java面试设计题目,意外的惊喜

1.Java基础面试知识点Java中==和equals和hashCode的区别int、char、long各占多少字节数int与integer的区别探探对Java多态的理解String、StringBuffer、StringBuilder区别什么是内部类?内部类的作用抽象类和接口区别抽象类的意义抽象类... 查看详情

java抽象类与接口的区别(代码片段)

很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题。本文我们将仔细讨论这些话题。在讨论它们之间的不同点之前,我们先看看抽象类、接口各自的特性。抽象... 查看详情

招银网络面试题考点知识点总结(java岗)

java基础全是基础不用多说肯定考的多,尤其是招银OOP特性/java语言特性:封装、继承、多态多态具体的表现:多态应用举例、如何调用父类方法(super)、重写和重载(重写父类方法的规则、构造方法能否重写。。)类、抽象类... 查看详情

java面试题区别系列

面试题final、finally、finalize三者的区别?类似:throw和throwsCollection和CollectionsString、StringBuffer、StringBuilderArrayList、LinkedListHashMap、LinkedHashMap重写、重载结构不相似的:抽象类、接口==、equals() 查看详情

2019年自做407道java面试题答案

基础与语法JDK和JRE有什么区别?==和equals的区别是什么?基本类型和包装类对象使用==和equals进行比较的结果?什么是装箱?什么是拆箱?装箱和拆箱的执行过程?常见问题?hashCode()相同,equals()也一定为true吗?final在java中的作用... 查看详情

java面试题大汇总(附答案)(代码片段)

相关概念面向对象的三个特征封装,继承,多态.这个应该是人人皆知.有时候也会加上抽象.多态的好处允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用).主... 查看详情

java面试题大汇总(附答案)(代码片段)

相关概念面向对象的三个特征封装,继承,多态.这个应该是人人皆知.有时候也会加上抽象.多态的好处允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用).主... 查看详情