Java中接口和抽象类的区别?
2024-09-01 20:05:35
抽象类
抽象类必须用 abstract
修饰,子类必须实现抽象类中的抽象方法,如果有未实现的,那么子类也必须用 abstract 修饰。抽象类默认的权限修饰符为 public
,可以定义为 public 或 procted,如果定义为 private,那么子类则无法继承。抽象类不能创建对象
抽象类和普通类的区别
- 抽象类必须用public、procted 修饰(如果为private修饰,那么子类则无法继承,也就无法实现其抽象方法)。默认缺省为 public
- 抽象类无法创建对象
- 如果一个子类继承抽象类,那么必须实现其所有的抽象方法。如果有未实现的抽象方法,那么必须定义为 abstract
接口
接口中的变量隐式的使用 public static final
修饰,并且需要给出初始值。方法隐式的使用 public abstract
修饰(并且只能是 public ,如果是 private,procted,那么就编译报错)。接口中的方法默认不能有具体的实现(JDK1.8开始可以有默认的实现)
接口和抽象类的区别
- 抽象类只能继承一次,但是可以实现多个接口
- 接口和抽象类必须实现其中所有的方法,抽象类中如果有未实现的抽象方法,那么子类也需要定义为抽象类。抽象类中可以有非抽象的方法
- 接口中的变量必须用 public static final 修饰,并且需要给出初始值。所以实现类不能重新定义,也不能改变其值。
- 接口中的方法默认是 public abstract,也只能是这个类型。不能是 static,接口中的方法也不允许子类覆写,抽象类中允许有static 的方法
最新文章
- vs运行时候冒了这个错:无法启动IIS Express Web 服务器~Win10
- shell 中变量前";?";的作用
- Code First :使用Entity. Framework编程(2) ----转发 收藏
- 从语言到库到框架,再到API,再到标记最后到DSL语言
- 黄聪:Wordpress、PHP使用POST数据过大导致MySQL server has gone away报错原因分析
- 手写SqlHelper
- sdut Message Flood(c++ map)
- [LeetCode] 74. Search a 2D Matrix 解题思路
- CentOS安装错误:no default or ui configuration
- [C#参考]委托机制
- Libevent 事件管理和添加事件
- spring cloud之Feign的使用
- leetcode(js)算法之17电话号码的字母组合
- v-show 和 v-if 对 v-chart的影响
- (转)JavaScript escape() 函数(该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。)
- nginx负载均衡的5种策略
- NYOJ 252 01串 普通dp
- IE9对HTML5中一部分属性不提供支持的原因
- [转]使用QT开发GoogleMap瓦片显示和下载工具
- thinkpad T61 Fn功能键的完整说明及有关问题解决