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

Java_接口基本介绍

文章目录

目录

文章目录

一.接口基本介绍

二、深入讨论

三、注意事项和细节

1.接口不能被实例化

2.接口中所有的方法都是public方法,接口中抽象方法,可以不用abstract修饰 图



一.接口基本介绍

接口就是给出一些没有实现的方法封装到一起。到某个类要使用的时候,再根据具体情况把这些类方法写出来。语法如下

interface 接口名{
//属性
//方法
}

class 类名 implements 接口{
自己属性;
自己方法;
必须实现的接口的抽象方法
}

 在jdk8后,可以有默认实现方法,需要使用default关键字

在jdk8后,可以有静态方法

package com.java.interface_;

public interface Ainterface {
    //写属性
    public int n1=10;
    //写方法
    //在接口中,抽象方法
    public void hi();
    //在jdk8后,可以有默认实现方法,需要使用default关键字
    default public void ok(){
        System.out.println("ok.....");
    }
    //在jdk8后,可以有静态方法
    public static void cry(){
        System.out.println("cry....");
    }
}

二、深入讨论

对初学者来说,理解接口的概念不算太难,难的是就是不知道什么时候使用接口,下面我列举几个场景。

1.我现在要制造战斗机,武装直升机,专家只需把飞机需要的供应的规格定下来即可,然后让别人具体实

2.现在有一个项目经理管理三个程序员,功能开发一个软件,为了控制和管理软件,项目经理可以定义一个接口,然后由程序员具体实现。

实际要求:3个程序员,编写3个类,分别完成对Mysql Oracle DB2数据库的链接数据库

 

package com.java.interface_;

public interface Dbinterface {//项目经理
    public void connect();
    public void close();
}


class MysqlDB implements Dbinterface {
    @Override
    public void connect() {
        System.out.println("mysql正在链接");
    }

    @Override
    public void close() {
        System.out.println("mysql正在退出");
    }
}

class OracleDB implements Dbinterface {
    @Override
    public void connect() {
        System.out.println("链接Oracle数据库");
    }

    @Override
    public void close() {
        System.out.println("退出Oracle数据库");
    }
}

 class Interface03 {
    public static void main(String[] args) {
        MysqlDB mysqlDB = new MysqlDB();
       t(mysqlDB);
        
    }
    public static void t(Dbinterface db){
        db.connect();
        db.close();
    }
}



 

三、注意事项和细节

1.接口不能被实例化

代码如下(示例):

package com.java.interface_;

public class InterfaceDetail01 {
    public static void main(String[] args) {

    }
}

//接口不能被实例化
interface IA{ }

2.接口中所有的方法都是public方法,接口中抽象方法,可以不用abstract修饰 图示

代码如下(示例):

package com.java.interface_;

public class InterfaceDetail01 {
    public static void main(String[] args) {

    }
}
//接口不能被实例化
interface IA{
    abstract void say();
}

 3. 一个普通类实现接口,就必须将该接口的所有方法都实现。可以使用alt+enter实现来解决

4.抽象类实现接口,可以不用实现接口的方法。

5.一个类同时可以实现多个接口

6.接口中的属性,只能是final的,而且是public static final 修饰符。比如:int

a=1;实际上是public static final int a=1;(必须初始化)

7.接口中属性的访问形式:接口名.属性名

8.一个接口不能继承其他的类,但是可以继承多个别的接口举例

interface A extends B C{ }

9.接口的修饰符 只能是public和默认,这点和类的修饰是一样的

package com.java.interface_;

public class InterfaceDetail02 {
    public static void main(String[] args) {
        //证明 接口的属性
        System.out.println(IB.n1);
        //IB.n1=30;不能这样定义
    }
}

//一个类同时可以实现多个接口
interface IB {
    int n1=10;//等价public static final int n1=10;
    void hi();
}
interface IC {
    void say();
}
interface ID extends IB,IC{
    
}
interface IE{}

class Pig implements IB,IC{
    @Override
    public void hi() {

    }

    @Override
    public void say() {
        
    }
}

相关文章:

  • 16、Java——QuickHit游戏
  • SpringBoot--Controller获取HttpServletRequest
  • 牛客刷题笔记
  • 我把华为云的Ubuntu 18.04升级到了Ubuntu 22.04
  • Google Earth Engine-02(主界面介绍)
  • 5.java数据结构与算法 ---- 第七章 八大排序(冒泡;选择;插入/希尔;快排;归并;基数)
  • 新学期你立一个什么样的FLAG?
  • 【数据结构与算法】第九篇:哈希表原理
  • 自动驾驶江湖重新排位:毫末智行“重感知、轻地图”优势初现
  • [JS]变量
  • 用户登录更新中:网关,token,全局异常处理
  • Unity Pico Neo3 基础开发流程
  • 图的刷题..
  • 机器学习个人总结(王道版)
  • 【Machine Learning】8.逻辑回归及其在分类问题的应用
  • Google 是如何开发 Web 框架的
  • 《剑指offer》分解让复杂问题更简单
  • 【mysql】环境安装、服务启动、密码设置
  • Android组件 - 收藏集 - 掘金
  • Angular2开发踩坑系列-生产环境编译
  • CentOS 7 防火墙操作
  • Create React App 使用
  • create-react-app做的留言板
  • JavaScript对象详解
  • Less 日常用法
  • PHP 7 修改了什么呢 -- 2
  • python3 使用 asyncio 代替线程
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • Vue.js源码(2):初探List Rendering
  • win10下安装mysql5.7
  • 爱情 北京女病人
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 推荐一个React的管理后台框架
  • 我的zsh配置, 2019最新方案
  • 一个SAP顾问在美国的这些年
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • C# - 为值类型重定义相等性
  • zabbix3.2监控linux磁盘IO
  • 国内开源镜像站点
  • 数据可视化之下发图实践
  • 昨天1024程序员节,我故意写了个死循环~
  • (LeetCode C++)盛最多水的容器
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (七)Knockout 创建自定义绑定
  • (一) springboot详细介绍
  • (转)JAVA中的堆栈
  • (转)Linq学习笔记
  • (转)Oracle存储过程编写经验和优化措施
  • (转)重识new
  • *上位机的定义
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .net 流——流的类型体系简单介绍