java基础 4 继承(1)抽象类与接口的区别
2024-08-30 08:55:21
抽象类:
是用来捕捉子类的通用特性的,至少包含一个抽象方法,该抽象方法必须在子类中实现,由于抽象类没有抽象方法的具体实现,因此不能对抽象类进行实例化。
接口:
定义了一组方法,是抽象方法的集合,但是接口都没有方法的实现,也就是说这些方法都是抽象方法。
参数 | 抽象类 | 接口 |
默认的方法实现 | 它可以有默认的方法实现 | 接口是完全抽象的,它根本不存在方法的实现 |
实现 | extends 子类需要重写抽象类中的所有抽象方法 | implements 子类需要实现接口中的所有方法 |
构造器 | 可以有 | 没有 |
与正常java类的区别 | 除了不能实例化抽象类之外,和普通Java类没有任何区别 | 接口是完全不同的类型 |
访问修饰符 | public protected defalut | 只能是public |
main方法 | 可以有并运行 | 没有 |
多继承 | 可以继承一个类和实现多个接口 | 只可以继承一个或多个其他接口 |
速度 | 比接口快 | 它需要时间来寻找在类中实现的方法 |
添加新方法 | 可以提供默认的实现,不需要改变现在的代码 | 必须改变实现该接口的类 |
什么时候使用抽象类和接口
- 如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。
- 如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
- 如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。
最新文章
- Android之RecyclerView的原生Bug-Inconsistency detected. Invalid view holder adapter positionViewHolder{a1bbfa3 position=2 id=-1, oldPos=-1, pLpos:-1 no parent}
- js form 表达关于onpress 的一个问题
- go http.Get请求 http.Post请求 http.PostForm请求 Client 超时设置
- scalatest的userguide
- html input的file文件输入框onchange事件触发一次失效解决方法
- 《锋利的jQruery》读书笔记
- 更改ubuntu mysql data目录位置
- oracle job interval·相关事例
- JS 页面加载触发事件 document.ready和onload的区别(转)
- 恶意软件&;quot;跨平台&;quot; 小心钱包很受伤
- javascript call和apply
- qt 汉化 国际化
- md5加密解析
- js常用的数组方法
- linux环境给mongodb创建索引
- 2D游戏与3D游戏的区别 原文:https://zhidao.baidu.com/question/588490865.html
- 6)django-示例(fbv)
- web socket RFC6455 frame 打包、解包
- JavaScript使用localStorage缓存Js和css文件
- 一个简单的 openssl 示例
热门文章
- Oracle EXPDP and IMPDP
- laravel扩展包服务提供者的注册的两种方式
- 关于Error:Maven Resources Compiler: Maven project configuration required for module '项目名' isn't available. Compilation of Maven projects is supported only&
- python数组中数据位置交换 -- IndexError: list assignment index out of range
- 数的计数(noip2001,动态规划递推)
- HUST软件与微电子学院第八届程序设计竞赛-小乐乐下象棋
- MariaDB数据库(一)
- day23 01 类的命名空间
- python对象销毁(垃圾回收)
- MySQL存储过程中一直困扰的 の 变量中的@