当前位置:网站首页>面向接口编程
面向接口编程
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)是一种编程思想,接口作为实体抽象出来的一种表现形式,用于抽离内部实现进行外部沟通,最终实现内部变动而不影响外部与其他实现交互
边栏推荐
- 华东师大团队提出,具有DNA调控电路的卷积神经网络的系统分子实现
- 3000 words speak through HTTP cache
- Continuous creation depends on it!
- JS 模块化
- Personal notes of graphics (4)
- Imitate the choice of enterprise wechat conference room
- 121. The best time to buy and sell stocks
- Talk about the cloud deployment of local projects created by SAP IRPA studio
- What is the difference between IP address and physical address
- null == undefined
猜你喜欢
Three. JS series (1): API structure diagram-1
95.(cesium篇)cesium动态单体化-3D建筑物(楼栋)
Shandong old age Expo, 2022 China smart elderly care exhibition, smart elderly care and aging technology exhibition
Description of vs common shortcut keys
Cesium(3):ThirdParty/zip. js
TiDB For PostgreSQL和YugabyteDB在Sysbench上的性能对比
AutoLISP series (3): function function 3
Odoo集成Plausible埋码监控平台
【C 语言】 题集 of Ⅹ
Personal notes of graphics (4)
随机推荐
Geoserver2.18 series (5): connect to SQLSERVER database
URL和URI的关系
Binary search tree (basic operation)
Opencv configuration 2019vs
Cesium(3):ThirdParty/zip. js
asyncio 概念和用法
laravel post提交数据时显示异常
How can laravel get the public path
Three. JS series (1): API structure diagram-1
How to query the data of a certain day, a certain month, and a certain year in MySQL
Common training data set formats for target tracking
修改配置文件后tidb无法启动
如何快速检查钢网开口面积比是否符合 IPC7525
Binary search tree (features)
Three. JS series (2): API structure diagram-2
Xcode Revoke certificate
Description of vs common shortcut keys
The team of East China Normal University proposed the systematic molecular implementation of convolutional neural network with DNA regulation circuit
二叉搜索树(基操篇)
数据中台落地实施之法