当前位置: 首页 > news >正文

接口的定义和实现

接口

  • 普通类:只有具体实现

  • 抽象类:具体实现和规范(抽象方法)都有!

  • 接口:只有规范!自己无法写方法专业的约束!约束和实现分离:面向接口编程

  • 接口就是规范,定义的是一组规则,体现了现实世界中“如果你是……则必须能……”的思想。如果你是天使,则必须能飞。如果你是汽车,则必须能跑。如果你是好人,则必须干掉坏人;如果你是坏人,则必须欺负好人。

  • 接口的本质是契约,就像我们人间的法律一样。制定好后大家都遵守。

  • oop的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都只针对具备了抽象能力的语言(比如C++,JAVA,C#等),就是因为设计模式所研究的,实际上就是如何合理的去抽象。

  • 整个面向对象的精髓:23种设计模式

  • 声明类的关键字是class,声明接口的关键字是interface,实现的关键字是implements

  • 抽象类和接口对比:

    1. 抽象类的关键字是abstract class,只能通过extends继承,而且是单继承

    格式:A抽象类public abstract class A{}

    ​ B继承public class B extends A{}

    1. 接口的关键字是interface,实现接口用implements

​ 格式:A接口public interface A{}

​ B接口实现public class B implements A{}

接口UserService:

package oop.demo12;

//interface 定义接口的关键字,接口都需要有实现类
public interface UserService {
    //静态常量    接口里面定义的属性都是常量 public static final
    public static final int age = 99;

    //接口中的所有定义的方法其实都是抽象的 public abstract
    //void run(String name);//不写默认是public abstract void run();   接口直接写返回类型,接口名字
    void create(String name);//增
    void delete(String name);//删
    void update(String name);//改
    void read(String name);//查
}
//难点:如何锻炼抽象的思维? 架构师

接口TimeService:

package oop.demo12;

public interface TimeService {
    void timer();
}

接口实现类UserServiceImpl:

package oop.demo12;

//抽象类 extends   局限性单继承
//类 可以实现接口 implements 接口    可以多继承
//实现接口的类,就需要重写接口中的方法

//又加了一个接口TimeService,然后在这个实现类里面重写方法,并没有报错,反映出了接口的多继承
//利用接口实现多继承,
public class UserServiceImpl implements UserService,TimeService{   //输完报错,只要实现接口里面的四个方法就不会报错
    //如果要实现接口里面的所有定义,就必须要重写里面的所有方法
    @Override
    public void create(String name) {

    }

    @Override
    public void delete(String name) {

    }

    @Override
    public void update(String name) {

    }

    @Override
    public void read(String name) {

    }

    @Override
    public void timer() {

    }
}

接口总结:

作用:
    1.约束
    2.定义一些方法,让不同的人实现    10 --------> 1
    3.方法前面默认都是public abstract,可以不写
    4.常量前面默认都是public static final,可以不写
    5.接口不能被实例化,因为接口中没有构造方法
    6.implements可以实现多个接口
    7.必须要重写接口中的方法

接口详细教程

相关文章:

  • 蓝桥杯冲刺 - week1
  • windows微服务部署
  • 深入了解JVM:Java程序背后的核心原理
  • 【新星计划2023】SQL SERVER (01) -- 基础知识
  • 【Node.js】身份认证,Cookie和Session的认证机制,express中使用session认证和JWT认证
  • 算法基础-回溯算法
  • SpringBoot整合Flink(施耐德PLC物联网信息采集)
  • vue3 组件篇 Message
  • clip精读
  • 超级实用,解密云原生监控技术,使用prometheus轻松搞定redis监控
  • MyBatis高频面试题
  • C++中那些你不知道的未定义行为
  • 电容在微分、积分电路中的本质以及应用
  • 【系统学习】环境土壤物理模型HYDRUS1D/2D/3D
  • 解决Xshell无法连接Kali Linux 2020.1(2019.3)版本
  • canvas 绘制双线技巧
  • CSS盒模型深入
  • leetcode386. Lexicographical Numbers
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • MaxCompute访问TableStore(OTS) 数据
  • node入门
  • orm2 中文文档 3.1 模型属性
  • php面试题 汇集2
  • Promise面试题,控制异步流程
  • Puppeteer:浏览器控制器
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • vue 配置sass、scss全局变量
  • Vue全家桶实现一个Web App
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 机器学习学习笔记一
  • 基于 Babel 的 npm 包最小化设置
  • 技术攻略】php设计模式(一):简介及创建型模式
  • # Java NIO(一)FileChannel
  • #Spring-boot高级
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (2.2w字)前端单元测试之Jest详解篇
  • (C#)一个最简单的链表类
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .net core 控制台应用程序读取配置文件app.config
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .NET企业级应用架构设计系列之技术选型
  • .NET项目中存在多个web.config文件时的加载顺序
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • @angular/cli项目构建--Dynamic.Form