当前位置:网站首页>面向接口编程
面向接口编程
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)是一种编程思想,接口作为实体抽象出来的一种表现形式,用于抽离内部实现进行外部沟通,最终实现内部变动而不影响外部与其他实现交互

边栏推荐
- 【PHP】PHP接口继承及接口多继承原理与实现方法
- Personal notes of graphics (1)
- Bidding announcement: Fujian Rural Credit Union database audit system procurement project (re bidding)
- ThinkPHP URL 路由简介
- [C language] question set of X
- Leetcode-136-只出现一次的数(用异或来解答)
- 01tire+ chain forward star +dfs+ greedy exercise one
- iptables只允许指定ip地址访问指定端口
- 121. The best time to buy and sell stocks
- Find tags in prefab in unity editing mode
猜你喜欢

Logback日志框架第三方jar包 免费获取

记录Servlet学习时的一次乱码

Personal notes of graphics (4)

Three. JS series (1): API structure diagram-1

Odoo integrated plausible embedded code monitoring platform

The team of East China Normal University proposed the systematic molecular implementation of convolutional neural network with DNA regulation circuit

Description of vs common shortcut keys

Sysom case analysis: where is the missing memory| Dragon lizard Technology

数据中台落地实施之法

【DesignMode】外观模式 (facade patterns)
随机推荐
Description of vs common shortcut keys
The differences between exit, exit (0), exit (1), exit ('0 '), exit ('1'), die and return in PHP
Imitate the choice of enterprise wechat conference room
全网“追杀”钟薛高
Personal notes of graphics (2)
【PHP】PHP接口继承及接口多继承原理与实现方法
二叉搜索树(基操篇)
Common training data set formats for target tracking
Markdown formula editing tutorial
【DesignMode】模板方法模式(Template method pattern)
Lecturer solicitation order | Apache seatunnel (cultivating) meetup sharing guests are in hot Recruitment!
How does laravel run composer dump autoload without emptying the classmap mapping relationship?
Detailed explanation of several ideas for implementing timed tasks in PHP
【HCSD大咖直播】亲授大厂面试秘诀-简要笔记
MySQL中, 如何查询某一天, 某一月, 某一年的数据
Odoo集成Plausible埋码监控平台
Communication mode between application program and MATLAB
Leetcode-231-2的幂
【MySql进阶】索引详解(一):索引数据页结构
[C language] question set of X