【JAVA面试】关于接口

1.为什么接口中只能声明公共的静态的常量?

因为接口是标准规范,那么在规范中需要声明一些底线边界值,当实现者在实现这些规范时,不能去随意修改和触碰这些底线,否则就有"危险"

例如:USB1.0规范中规定最大传输速率是1.5Mbps,最大输出电流是5V/500mA。USB3.0规范中规定最大传输速率是5Gbps(500MB/s),最大输出电流是5V/900mA。

2.接口与抽象类之间的对比

|--------|-----------------------------------|-----------------------------------|
| 区别点 | 抽象类 | 接口 |
| 定义 | 可以包含抽象方法的类 | 主要是抽象方法和全局常量的集合 |
| 组成 | 构造方法、抽象方法、普通方法、常量、变量 | 常量、抽象方法(8.0默认方法、静态方法) |
| 使用 | 子类继承抽象类 | 子类实现接口 |
| 关系 | 抽象类可以实现多个接口 | 接口不能继承抽象类,但允许继承多个接口 |
| 常见设计模式 | 模板方法 | 简单工厂、工厂方法、代理模式 |
| 对象 | 通过对象的多态性产生实例化对象 | 通过对象的多态性产生实例化对象 |
| 局限 | 抽象类有单继承的局限 | 接口没有此局限 |
| 实际 | 作为一个模板 | 是作为一个标准或是表示一种能力 |
| 选择 | 如果抽象类和接口都可以使用的话,优先使用接口,因为避免单继承的局限 | 如果抽象类和接口都可以使用的话,优先使用接口,因为避免单继承的局限 |

在开发中,常看到一个类不是去继承一个已经实现好的类,而是要么继承抽象类,要么实现接口。

相关推荐
好好沉淀3 小时前
1.13草花互动面试
面试·职场和发展
阿蒙Amon6 小时前
C#每日面试题-常量和只读变量的区别
java·面试·c#
程序员小白条6 小时前
面试 Java 基础八股文十问十答第八期
java·开发语言·数据库·spring·面试·职场和发展·毕设
xlp666hub8 小时前
Linux 设备模型学习笔记(1)
面试·嵌入式
南囝coding9 小时前
CSS终于能做瀑布流了!三行代码搞定,告别JavaScript布局
前端·后端·面试
踏浪无痕9 小时前
Go 的协程是线程吗?别被"轻量级线程"骗了
后端·面试·go
一只叫煤球的猫10 小时前
为什么Java里面,Service 层不直接返回 Result 对象?
java·spring boot·面试
求梦82010 小时前
字节前端面试复盘
面试·职场和发展
千金裘换酒11 小时前
LeetCode 二叉树的最大深度 递归+层序遍历
算法·leetcode·职场和发展
C雨后彩虹11 小时前
书籍叠放问题
java·数据结构·算法·华为·面试