网站首页 > 文章精选 正文
在Java里面,接口与抽象类很类似,他们是Java中对于抽象类定义两种机制,正是由于这两种机制的存在,才赋予Java强大的面向对象能力。
从设计理念上,接口反映的是 “like-a” 关系,抽象类反映的是 “is-a” 关系。 抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。
具体说来,接口与抽象类的区别:
接口和抽象类的区别主要体现在以下 7 个方面。
区别1:定义关键字不同
接口使用关键字 interface 来定义,抽象类使用关键字 abstract 来定义
区别2:继承或实现的关键字不同
接口使用 implements 关键字定义其具体实现,抽象类使用 extends 关键字实现继承
区别3:子类实现或者继承的数量不同
接口的实现类可以有多个,而抽象类的子类,只能继承一个抽象类
区别4:属性访问控制符不同
接口中属性的访问控制符只能是 public,抽象类中的属性访问控制符无限制
区别5:方法控制符不同
接口中的方法默认控制符是 public,并且不能定义为其他控制符,抽象类中的方法控制符无限制,但是抽象方法不能使用 private 修饰
区别6:方法实现不同
接口中普通方法不能有具体的方法实现,在 JDK 8 之后 static 和 default 方法必须有方法实现,抽象类中普通方法可以有方法实现,抽象方法不能有方法实现
区别7:静态代码块使用不同
接口中不能使用静态代码块,抽象类中可以使用静态代码块
最后提两个问题:
第一、什么时候用接口,什么时候时候用抽象类
抽象类是对类的抽象,接口是对行为的抽象,抽象类定义的是类,接口定义的是行为。抽象类是从子类中发现了公共的东西,泛化出父类,然后子类继承父类。一般接口只是预先定义行为规范。
第二、Java抽象类中可以包含main方法吗?
是的,抽象类可以包含main方法,它只是一个静态方法,你可以使用main方法执行抽象类,但不可以创建任何实例。
猜你喜欢
- 2025-08-03 从小厂到腾讯T2.3OFFER,我所整理的面试题(含答案)
- 2025-08-03 前端最新面试题及答案 (2025)
- 2025-08-03 测试进阶:实现跨请求地保持登录的神器session你get了么?
- 2025-08-03 httprunner实战接口测试笔记,拿走不谢
- 2025-08-03 5分钟面试速记 - SpringCloud高频面试题+一句话答案
- 2025-08-03 一文掌握:5大自动化测试难题及高效解决方案
- 2025-08-03 面试滴滴科技,被按在地上摩擦,鬼知道我经历了什么?
- 2025-08-03 基于docker部署实现接口自动化持续集成
- 2025-08-03 SSM面试题总结(含答案)
- 2025-08-03 开源!AREX接口自动化回归测试的全过程
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)
- fmt.println (52)