接口和和抽象的区别总结
抽象类
类可以定义为抽象类
有抽象方法的类都是抽象类
抽象方法应用场景:
方法的实现没想好
- 无法统一子类的实现
如果父类中有抽象方法,子类不实现,子类必须为抽象类
抽象类不能被实例化
- 抽象类不能用abstract修饰属性、私有方法、构造器、静态方法、final的方法
- 属性:Abstract只能修饰类,方法。属性(成员变量)都有具体的值。
- 私有方法:如果能修饰,子类可以实现私有方法。私有方法只有本类能访问到,子类没有访问权限,既然不能访问就不能实现,子类必须定义为抽象类,子类继承类也必须是抽象类。子类中没有类能定义为非抽象类,无法用构造方法创建对象。
- 构造方法:构造方法特点:和本类类名相同。构造方法在子类中不能被重写。如果能够修饰构造方法,构造方法在父类中只有声明,需要在子类中重写。所有不能修饰,矛盾
- 静态方法:静态方法调用规则:类名.静态方法。如果能修饰,静态方法只能声明,不能有实现。矛盾
- Final:final修饰的方法,不能被重写。如果用abstract修饰,目的是让子类实现这个方法。又不能被重写,又要求实现,矛盾
接口应用场景:
- 无法统一实现,即使实现了意义也不大
- 软件实现流程,详细设计阶段。统一类功能,方法名,返回,参数等信息
接口的特点:
- 用 interface 来定义。
- 接口中的所有成员变量都默认是由public static final修饰的。
- 接口中的所有方法都默认是由public abstract修饰的。
- 接口没有构造方法。
- 实现接口的类必须提供接口中所有方法的具体实现内容。
抽象类VS接口
相同点:
- 接口和抽象类都不能被实例化。只能被其他类实现和继承。
- 接口和抽象类都可以包含抽象方法,实现接口和抽象类的类都必须实现这些抽象方法,否则实现的类就是抽象类。
不同点:
- 抽象类与接口定义不同:抽象类abstract class ,接口 interface
- 一个类最多只能有一个直接父类,包括抽象类;但一个类可以直接实现多个接口,通过实现多个接口可以弥补Java的单继承不足
- 接口不包含构造函数;抽象类可以包含构造函数,抽象类里的构造函数并不是用于创建对象,而是让其子类调用这些构造函数来完成属于抽象类的初始化操作。
- 接口里只能定义静态常量属性,不能定义普通属性;抽象类里既可以定义普通属性,也可以定义静态常量
- 接口里不能定义静态方法;抽象类可以定义静态方法
- 接口里只能包含抽象方法,不包含已经实现的方法;抽象类则完全可以包含普通的方法。
接口和和抽象的区别总结相关推荐
- 抽象类(abstract class)和接口(Interface)的区别
抽象类(abstract class)和接口(Interface)的区别 前言 抽象类(abstract class)和接口(Interface)是Java语言中对于抽象类定义进行支持的两种机制,赋予 ...
- 没有体现JAVA接口功能_深入浅出分析Java抽象类和接口【功能,定义,用法,区别】...
本文实例讲述了Java抽象类和接口.分享给大家供大家参考,具体如下: 对于OOP编程来说,抽象是它一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:抽象类和接口. 这两者有相似之处也有很 ...
- 接口和抽象类有什么区别?
面试题汇总 接口和抽象类有什么区别? 普通类可以实例化,接口都不能被实例化(它没有构造方法),抽象类如果要实例化,抽象类必须指向实现所有抽象方法的子类对象(抽象类可以直接实例化,直接重写自己的抽象方法 ...
- 我应该如何解释接口和抽象类之间的区别?
本文翻译自:How should I have explained the difference between an Interface and an Abstract class? In one ...
- c#中抽象类(abstract)和接口(interface)的相同点与区别
相同点: 1.都可以被继承 2.都不能被实例化 3.都可以包含方法声明 4.派生类必须实现未实现的方法 区别: 1.抽象基类可以定义字段.属性.方法实现.接口只能定义属性.索引器.事件.和方法声明,不 ...
- 接口和抽象类有什么区别
接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样.接口是对动作的抽象,抽象类是对根源的抽象. 抽象类表示的是,这个对象是什么.接口表示的是,这个对象能做什么.比如 ...
- java接口比继承优秀的地方,实现和继承的区别 java 实现接口和继承有什么区别...
Java中继承和实现的区别 理论上:类只能单继承,接口可以多继承(接口应该叫实现): 实践上:小编们说类的继承一般继承的是事物的属性,如:姓名,年龄,性别 等,而接口的继承(或者说实现)一般是继承事物 ...
- axios请求接口http_使用axios请求接口,几种content-type的区别详解
axios的使用 安装(一般使用框架的话, 脚手架都集成了) $ npm install axios 请求示例 // POST axios.post('/user', { firstName: 'Fr ...
- 配置静态路由下一跳为本地出战接口和IP地址的区别
配置静态路由下一跳为本地出战接口和IP地址的区别 在配置静态路由时,下一跳可以使用下一路由器的IP地址,也可以使用本路由器的出站接口.在点对点的网络中,两者可能没有什么差别,但在以太网中或者NBMA网 ...
最新文章
- Twitter在超分辨率技术上取得新进展,能还原打码图片
- 新手搭建简洁的Express-React-Redux脚手架
- 深入理解javascript的闭包
- 全球及中国汽车轮胎再制造市场销售产值与运营发展模式分析报告2022年
- TensorRT学习笔记3 - 运行sampleMNIST
- 《mysql必知必会》学习_第11章_20180801_欢
- linux ntp同步日志,Linux使用入门教程之Rsyslog日志管理、NTP和Rsync备份同步
- SAP CRM Service Order(服务订单)的状态字段设计原理介绍
- 认识Mahout下的云计算机器学习
- 一步步编写操作系统 28 cpu乱序执行
- LeetCode 1897. 重新分配字符使所有字符串都相等
- 嵌入式linux写文件内存增加,嵌入式Linux对内存的直接读写
- 【HNOI2017】礼物
- Linux 进程状态 说明
- webpack之loader篇
- 如何在线倍速观看百度网盘学习视频并快速做笔记
- 如何批量压缩图片体积大小kb?
- 观《五星大饭店》有感
- 资源暂时不可用错误(Out of memery)完美解决方案
- 各个国家的人有什么特点?
热门文章
- 析因设计方差分析(单独效应,主效应,交互效应)
- termux安装ubuntu18_TERMUX安装ubuntu并图形化
- 马斯克官宣:卸任推特CEO,继承者是她,网友:不会是女版的你吧!
- 教你按文件类型归类的简单方法
- Redis集群只读问题
- HUAWEI MateBook新品搭载华为应用市场Windows升级版 支持运行移动应用
- 批量在所有文件夹名称的后面添加相同的后缀
- 买笔记本必须带 9款小巧测试软件推荐
- 用python做软件开发有前途吗_做软件开发有前途吗?
- java jpanel_Java JPanel.setAutoscrolls方法代码示例