当前位置:网站首页>面向接口编程
面向接口编程
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)是一种编程思想,接口作为实体抽象出来的一种表现形式,用于抽离内部实现进行外部沟通,最终实现内部变动而不影响外部与其他实现交互
边栏推荐
- [vulnhub range] thales:1
- Introduction and use of gateway
- Communication mode between application program and MATLAB
- What are compiled languages and interpreted languages?
- 【DesignMode】模板方法模式(Template method pattern)
- Xcode Revoke certificate
- Three. JS series (1): API structure diagram-1
- Horizontal and vertical centering method and compatibility
- Pycharm terminal enables virtual environment
- Prediction - Grey Prediction
猜你喜欢
Xcode Revoke certificate
数据中台落地实施之法
95. (cesium chapter) cesium dynamic monomer-3d building (building)
Statistical learning method -- perceptron
Have fun | latest progress of "spacecraft program" activities
Good news! Kelan sundb database and Hongshu technology privacy data protection management software complete compatibility adaptation
[flower carving experience] 15 try to build the Arduino development environment of beetle esp32 C3
Imitate the choice of enterprise wechat conference room
Description of vs common shortcut keys
【C 语言】 题集 of Ⅹ
随机推荐
Introduction to ThinkPHP URL routing
作为Android开发程序员,android高级面试
Laravel 中config的用法
Cesium (4): the reason why gltf model is very dark after loading
logback.xml配置不同级别日志,设置彩色输出
Bidding announcement: Fujian Rural Credit Union database audit system procurement project (re bidding)
Laravel 服务提供者实例教程 —— 创建 Service Provider 测试实例
laravel post提交数据时显示异常
[flower carving experience] 15 try to build the Arduino development environment of beetle esp32 C3
Leetcode-231-2的幂
如何快速检查钢网开口面积比是否符合 IPC7525
全网“追杀”钟薛高
Multiplication in pytorch: mul (), multiply (), matmul (), mm (), MV (), dot ()
Leetcode-136-只出现一次的数(用异或来解答)
Odoo integrated plausible embedded code monitoring platform
JS 模块化
Mysql database basic operation DQL basic query
Opportunity interview experience summary
二叉搜索树(基操篇)
JS modularization