当前位置:网站首页>面向接口编程
面向接口编程
2022-07-07 14:27:00 【大林子先森】
- 前置知识:什么是接口
- 接口(英文:interface),是Java编程预研中的一个抽象类型,是抽象方法的集合,一个类通过继承接口的方式,从而实现继承接口的抽象方法。
- 接口与普通类的区别
- 类描述对象的属性和方法,接口则定义类要实现的方法
- 接口每月构造方法,无法被实例化,但是可以被实现,一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。
- 接口中可以有变量,但是接口中的变量会被指定为public static final变量
- 接口支持多继承
- 接口是隐式抽象的,接口中的每一个方法都是隐式抽象的,接口中的方法回被隐式的指定为public abstract
- 接口与抽象类的区别
- 抽象类可以提供某些方法的部分实现
- 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型
- 接口中不能含有静态代码块和静态方法,而抽象类可以。JDK1.8之后,接口可以有静态方法和方法体了
- 一个类只能继承一个抽象类,但是可以实现多个接口
- 抽象类设计出来的目的是为了抽取出某一个种类的一些共有特性或者默认行为,以达到代码复用的目的。而接口则是为了规定某一种标准而设计出来,它强调的是规范,在面向对象语言中体现就是多态性的使用。
- 分支主题
- JDK8 --接口默认方法
- 定义
- 接口可以有实现方法,而且不需要实现类去实现其方法,在定义接口时,只需在方法名前面加个 default 关键字即可实现默认方法
- 语法格式
- public interface MyInterface{
- default void print(){
- // 我是默认方法
- }
- }
- 冲突解决
- 问题描述:如果一个类继承了多个接口,而这多个接口内部定义了同名的默认方法
- 1)类中的方法优先级最高。类或父类中声明的方法的优先级高于任何声明为默认方法的优先级。
- 2)如果无法依据第一条进行判断,那么子接口的优先级最高:函数签名相同时,优先选择拥有最具体实现的默认方法的接口,即如果B继承了A,那么B就比A更加具体。
- 3)最后,如果还是无法判断,继承了多个接口的类必须通过显示覆盖和调用期望的方法,显示的选择使用哪一个默认方法的实现。
- 定义
- JDK8--接口声明静态方法
- 语法格式
- public interface Vehicle {
- default void defaultMethod(){
- System.out.println('我是默认方法!');
- }
- // 静态方法
- static void staticMethod(){
- System.out.println('我是静态方法!!!');
- }
- }
- 语法格式
- 前置知识:面向过程编程POP
- 是一种以过程为中心的编程思想,分析出解决问题所需要的步骤,然后利用函数把这些步骤一步一步进行实现,在使用的时候一个一个依次调用直至问题解决
- 优点
- 将问题拆解成一个个步骤、类似流水线一样,一步步执行,将复杂的问题流程化进而简单化。性能比面向对象编程高,面向对象编程中类调用过程需要加载、实例化,资源消耗更大;对向性能要求高的比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发
- 缺点
- 没有面向对象编程易维护、易复用、易扩展
- 适用场景
- 性能要求较高的系统开发中
- 前置知识:面向对象编程OOP
- 面向对象则是一种以对象为中心的编程思想,通过分析问题,分解出一个一个的对象,对象中包含具体的属性和行为,然后通过不同对象之间的调用来组合解决问题。
- 优点
- 1)易理解:采用面向对象思想设计开发,更符合人的思考方式,可读性高。
- 2)易维护:面向对象有封装、继承、多态性的特性,即使需求有变动,需要维护的更多是局部模块,维护起来更加方便和更低成本。
- 3)易扩展:面向对象有封装、继承、多态性的特性,在设计系统阶段可以设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展。
- 4)易复用:也是同理,因为面向对象的三大特性,使得通用代码可以更简单的复用,提高开发效率。
- 缺点
- 性能会比面向过程低,编程复杂度较高
- 适用场景
- 用户需求经常变化,互联网应用,游戏,企业内部应用
- 什么是面向接口编程
- 面向接口编程(Interface Oriented Programming:OIP)是一种编程思想,接口作为实体抽象出来的一种表现形式,用于抽离内部实现进行外部沟通,最终实现内部变动而不影响外部与其他实现交互
边栏推荐
- The team of East China Normal University proposed the systematic molecular implementation of convolutional neural network with DNA regulation circuit
- laravel中将session由文件保存改为数据库保存
- 偶然升职的内心独白
- Horizontal and vertical centering method and compatibility
- Leetcode-136- number that appears only once (solve with XOR)
- iptables只允许指定ip地址访问指定端口
- URL和URI的关系
- Lecturer solicitation order | Apache seatunnel (cultivating) meetup sharing guests are in hot Recruitment!
- 使用JSON.stringify()去实现深拷贝,要小心哦,可能有巨坑
- 数据中台落地实施之法
猜你喜欢
95.(cesium篇)cesium动态单体化-3D建筑物(楼栋)
模仿企业微信会议室选择
1亿单身男女“在线相亲”,撑起130亿IPO
【DesignMode】外观模式 (facade patterns)
What about the pointer in neural network C language
【MySql进阶】索引详解(一):索引数据页结构
Good news! Kelan sundb database and Hongshu technology privacy data protection management software complete compatibility adaptation
Three. JS series (2): API structure diagram-2
无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
平衡二叉树(AVL)
随机推荐
Logback日志框架第三方jar包 免费获取
How to determine whether the checkbox in JS is selected
预测——灰色预测
URL和URI的关系
iptables只允许指定ip地址访问指定端口
C语言进阶——函数指针
Performance comparison of tidb for PostgreSQL and yugabytedb on sysbench
You Yuxi, coming!
Statistical learning method -- perceptron
What about the pointer in neural network C language
Continuous creation depends on it!
Personal notes of graphics (4)
markdown公式编辑教程
Build an all in one application development platform, light flow, and establish a code free industry benchmark
Vs2019 configuration matrix library eigen
[flower carving experience] 15 try to build the Arduino development environment of beetle esp32 C3
Xcode Revoke certificate
Vs tool word highlight with margin
47_ Contour lookup in opencv cv:: findcontours()
【Vulnhub靶场】THALES:1