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

Java接口专题

基本介绍

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

注意:在jdk7之前,接口里所有的方法都是抽象方法。在jdk8之后接口中可以有静态方法,默认方法

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

例子

public interface AInterface{//属性int a=10;//方法(抽象方法)void b();//jdk8之后接口中可以有默认方法default public void c(){System.out.println("hello");}//jdk8之后接口中可以有静态方法public static void d(){System.out.println("hi");}
}

深入讨论

在这里插入图片描述

//项目经理写的
public interface DBInterface{void connect();void close();
}
//A程序员连接mysql
public class MysqlDB implements DBInterface{@overridepublic void connect(){System.out.println("连接mysql");}public void close(){System.out.println("关闭mysql");}
}
//B程序员连接Oracle
public class Oracle implements DBInterface{@overridepublic void connect(){System.out.println("连接Oracle");}public void close(){System.out.println("关闭Oracle");}
}
//运行数据库
public class InterfaceTest {public static void main(String[] args) {MysqlDB mysqlDB = new MysqlDB();//调用方法InterfaceTest interfacetest= new InterfaceTest();interfacetest.work(mysqlDB);}public static void work(DBInterface db){db.connect();db.close();}
}

运行结果
在这里插入图片描述

使用细节

1、接口中所有的方法都是publoc, 默认使用public abstract修饰方法

void a();
//实际上是
public abstract void a();

2、一个普通类实现接口就必须将该接口中的所有方法都实现,可以使用alt+enter
3、抽象类实现接口,可以不用实现接口中的方法。
4、一个类可以实现多个接口

class Pig implements A,B{... ...
}

5、接口中所有的属性都是public, 默认使用public static final修饰属性,且必须初始化

int a=1;
//实际上是
public static final a=1;

6、接口不能继承类,但是可以继承多个其他接口。

interface A extends B,C{}

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

接口VS继承

1、接口和继承解决的问题不同
继承的价值主要在于:解决代码的复用性和可维护性。
接口的价值主要在于:设计,设计好各种规范(方法),让其它类去实现这当方法。
2、接口比继承更加灵活
接口比继承更加灵活。继承是满足is - a的关系,而接口只需满足like - a的关系。
3、接口在一定程度上实现代码解耦

接口多态特性

接口多态传递

课堂练习

http://www.lryc.cn/news/25996.html

相关文章:

  • 6招优化WordPress打开速度-让你的网站飞起来
  • 春天到了,来一场 VoxEdit 创作大赛吧!
  • 异步Buck和同步Buck的特点
  • 基于轻量级YOLO开发构建中国象棋目标检测识别分析系统
  • 机器学习100天(三十五):035 贝叶斯公式
  • 大话数据结构-栈
  • javaFx实现放大镜效果——圆形、矩形、三角形放大镜,拖动调整放大镜大小,设置放大倍数
  • 什么是客户忠诚度?建立忠诚文化的 5 种方法
  • 【ROS2知识】关于colcon编译和ament指定
  • 数据结构: 最小栈
  • STM32之PWM
  • 操作系统(1.1)--引论
  • Spring boot + mybatis-plus 遇到 数据库字段 创建不规范 大驼峰 下划线 导致前端传参数 后端收不到参数 解决方案
  • JavaScript String 字符串对象
  • Lazada如何做好店铺运营?产品定价是关键
  • 空口协议Eapol、802.11 Action、802.11 BAR 和 802.11BA、802.11 Encrypted Data讲解
  • C++类和对象
  • Leetcode.面试题 05.02 二进制数转字符串
  • UDPTCP网络编程
  • 【微信小程序】-- 全局配置 -- tabBar(十七)
  • Cortex-A7中断控制器GIC
  • JavaSE:常用类
  • Element中树形控件在项目中的实际应用
  • kaggle RSNA 比赛过程总结
  • 51单片机入门————LED灯的控制
  • J - 二进制与、平方和(线段树 + 维护区间1的个数)
  • BertTokenizer的使用方法(超详细)
  • 深度学习编译器CINN(3):编译过程中遇到的问题总结
  • yum 安装mysql8数据全过程
  • 内网vCenter部署教程一