每日一道面试题之接口和抽象类有什么区别?

简介: 每日一道面试题之接口和抽象类有什么区别?

解释“接口”和“抽象类”:

在对他们进行比较之前,我们先来解释一下什么是接口?现实世界的接口通常是指两个不同物体之间相互交互所必须通过的一个"中介",没有这个"中介",两者就无法进行交互,我们把这个"中介"称为接口,例如:门窗户,楼道,插孔,电梯间等,但在软件世界中所提到的接口,有狭义和广义之分,狭义的接口是指某个程序设计语言所提供的API,广义的接口是指人与软件交互的图形界面,通过这个图形界面,人们才能使用此软件,JAVA中的接口是一种特殊的类,接口中只能包含常量和抽象方法,属于复合数据类型,是狭义的接口。,关于抽象类的解释大家可以去看这篇文章

相同之处:

1:都包含抽象方法,都不能被实例化

那么接口为什么不能被实例化呢?原因是:接口的定义和类很相似,分为接口声明和接口体两个部分,接口中能够定义的成员只有常量和抽象方法两种(或者两选一),不能包含构造方法,由于接口中只包含抽象方法,这就导致了它不能被实例化的原因和抽象类是相似的,而抽象类不能被实例化的原因我在之前的文章中有总结过,有需要的小伙伴可以去这里

2:他们的对象进行实例化操作的方法相同

无论是接口还是抽象类,虽然自身不能进行实例化操作,但由于抽象类和接口都是引用数据类型,可以声明抽象类和接口类型的引用变量,并将子类的对象实例赋给抽象类和接口变量,因此它们的对象都可利用其自身的多态性向上转型实现对接口或抽象类的实例化操作。对于向上转型这部分知识不懂的小伙可参考这篇文章


不同之处:

1:关键字不同:

对于接口,使用interface修饰接口,它的子类使用implements关键字实现该接口,而对于抽象类,使用abstract用来修饰抽象类,它的子类使用extends关键字继承该抽象类

2:组成不同

在抽象类中可以定义常量,变量,抽象方法,普通方法,构造方法,而对于接口,在java8之前,接口中只能定义抽象方法和全局常量,java8之后,接口中可以定义静态方法,但静态方法必须有方法体。

3:权限不同

抽象类可以使用各种权限,而接口的权限只能是public

4:关系不同

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

5:局限性

由于java单继承的限制,一个子类只能继承一个抽象类,但一个子类可以实现多个接口

相关文章
|
14天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
1月前
|
编译器
经典面试题:变量的声明和定义有什么区别
在编程领域,变量的“声明”与“定义”是经典面试题之一。声明告诉编译器一个变量的存在,但不分配内存,通常包含变量类型和名称;而定义则为变量分配内存空间,一个变量必须至少被定义一次。简而言之,声明是告知变量形式,定义则是实际创建变量并准备使用。
|
1月前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
111 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
|
1月前
|
前端开发 小程序 JavaScript
面试官:px、em、rem、vw、rpx 之间有什么区别?
面试官:px、em、rem、vw、rpx 之间有什么区别?
38 0
|
2月前
|
Java 关系型数据库 MySQL
面试官:GROUP BY和DISTINCT有什么区别?
面试官:GROUP BY和DISTINCT有什么区别?
89 0
面试官:GROUP BY和DISTINCT有什么区别?
|
3月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
8天前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
9天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
33 4
|
1月前
|
算法 Java 数据中心
探讨面试常见问题雪花算法、时钟回拨问题,java中优雅的实现方式
【10月更文挑战第2天】在大数据量系统中,分布式ID生成是一个关键问题。为了保证在分布式环境下生成的ID唯一、有序且高效,业界提出了多种解决方案,其中雪花算法(Snowflake Algorithm)是一种广泛应用的分布式ID生成算法。本文将详细介绍雪花算法的原理、实现及其处理时钟回拨问题的方法,并提供Java代码示例。
67 2
|
1月前
|
JSON 安全 前端开发
第二次面试总结 - 宏汉科技 - Java后端开发
本文是作者对宏汉科技Java后端开发岗位的第二次面试总结,面试结果不理想,主要原因是Java基础知识掌握不牢固,文章详细列出了面试中被问到的技术问题及答案,包括字符串相关函数、抽象类与接口的区别、Java创建线程池的方式、回调函数、函数式接口、反射以及Java中的集合等。
28 0