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

程序员超时空 程序员超时空     2022-10-22     350

关键词:

抽象类与接口的区别,这是一个经常被问到面试题,区别主要有以下几点,我们可以从几个方面进行分析:
(一) 继承方面:
(1) 抽象类只能单继承;接口可以多实现
(二) 成员属性方面:
(1) 抽象类中可以有普通属性,也可以有常量
(2) 接口中的成员变量全部默认是常量,使用public static final修饰,这个可以省略不写
(三) 代码块方面:
(1) 抽象类可以含初始化块;接口不能含初始化块
(四) 构造函数方面:
(1) 接口不能有构造函数
(2) 抽象类可以有构函数,但是这里的构造函数不是用来创建对象的,而且用来被实现类调用进行初始化操作的
(五) 方法方面:
(1) 接口里面不能定义静态方法;抽象类里面可以定义静态方法
(2) 接口里面只能是抽象方法;抽象类里面可以有抽象方法也可以有普通方法

上面就是接口与抽象类的区别,在说完区别之后,我们可以补充一下接口与抽象类之间的相同之处:
(1) 接口与抽象类都不能被实例化,需要被其他进行实现或继承
(2) 接口与抽象类里面都能包含抽象方法,实现接口或继承抽象类的子类都必须实现这些抽象方法

针对相同之处的第二点,我再细说一下
(一) 超类是接口:
(1) 如果使用接口继承(extends,无法使用implements)这个接口,那么在这个子类接口中,可以实现其父类接口中的抽象方法(这种方法我从没看见过,但是在今天的面试中,面试官问我接口中是否可以有具体的实现方法,可以将这种情况举出来)
(2) 如果使用抽象类实现这个接口,可以在这个子类抽象类中实现父类接口中的抽象方法
(3) 如果使用具体类实现这个接口,那么就必须实现父类接口中的所有抽象方法
(二) 超类是抽象类:
(1) 接口不能继承抽象类
(2) 如果使用抽象类继承这个抽象类,可以在这个子类抽象类中实现父类接口中的抽象方法
(3) 如果使用具体类继承这个抽象类,那么就必须实现父类抽象类中的所有抽象方法

对于上面的说明,所以在相同之处的第二点处主要是针对具体类继承抽象类或实现接口来说的。

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

1. 接口和抽象类的区别抽象类可以存在普通成员函数,而接口中只能存在publicabstract方法抽象类中的成员变量客户是各种类型的,而接口中的成员变量只能是publicstaticfinal类型的抽象类只能继承一个,接口可以实现多个 接... 查看详情

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

Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。类可以实现很多个接口,但是只能继承一个抽象类类如果要实现一个... 查看详情

android面试每日一题:抽象类与接口的区别?

大体区别如下:抽象类可以提供成员方法的实现细节,而接口中只能存在public抽象方法;抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是publicstaticfinal类型的;接口中不能含有构造器、静态... 查看详情

android面试每日一题:抽象类与接口的区别?

大体区别如下:抽象类可以提供成员方法的实现细节,而接口中只能存在public抽象方法;抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是publicstaticfinal类型的;接口中不能含有构造器、静态... 查看详情

java面试题

一、java基础:1、抽象类与接口的区别:2、set集合和map集合在除去重复时,分别调用的是哪种方法?结果是否相同?3、把D:\java文件夹中内容复制到E:\中4、sleep()和wait()的区别5、线程的关闭方式有几种二、web基础1、servlet为什么... 查看详情

java抽象类与接口区别

java抽象类与接口区别:  abstractclass和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstractclass和interface之间在对于抽象类定义的支持方面具有很大的... 查看详情

2022java面试题道通科技

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

java抽象类与接口的区别

抽象类抽象类是用来捕捉子类的通用特性的。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。以JDK中的GenericServlet为例:publicabstractclassGenericServletimplementsServlet,ServletConfig,Serializable{//abstract... 查看详情

抽象类与接口的区别

抽象类与接口的区别 abstractclass和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstractclass和interface之间在对于抽象类定义的支持方面具有很大的相... 查看详情

java常用面试题

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

面试题分类

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

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

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

java常用面试题

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

java面试题区别系列

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

抽象类与接口的区别

抽象类的定义:成员属性:可以是变量,也可以是常量成员方法:可以抽象,也可以非抽象(比如:构造方法是一定会有的)接口类的定义:成员属性:只能是常量(publicstaticfinal)成员方法:只能是抽象(接口没有构造方法,... 查看详情

java抽象类和接口的区别

 成员区别抽象类:成员变量:可以变量,也可以常量构造方法:有成员方法:可以抽象,也可以非抽象 接口:成员变量:只可以是常量成员方法:只可以抽象 关系区别类与类:继承,单继承 类与接口:实现,单... 查看详情

java基础+面试题

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

java面试题总结

事务的ACID是指什么原子性(Atomic):事务中各项操作,要么全做要么全不做,任何一项操作的失败都会导致整个事务的失败;一致性(Consistent):事务结束后系统状态是一致的;隔离性(Isolated):并发执行的事务彼此无法看到对方的... 查看详情