Java接口专题

news2024/11/15 8:23:11

基本介绍

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

注意:在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{
	@override
	public void connect(){
		System.out.println("连接mysql");
	}
	public void close(){
		System.out.println("关闭mysql");
	}
}
//B程序员连接Oracle
public class Oracle implements DBInterface{
	@override
	public 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.coloradmin.cn/o/382667.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux进程控制(进程终止+进程等待+进程程序替换)

文章目录:一、进程终止进程退出码常见的进程退出方法exit函数_exit函数returnexit vs _exit vs return二、进程等待进程等待的必要性进程等待的方法waitwaitpid - 从子进程获取状态信息如何获取子进程status进程的阻塞等待和非阻塞等待三、进程程序替换替换原理进程…

科技制造商必须对安全、设计选择承担更多责任

网络安全和基础设施安全局局长称当今商业网络安全的现状是"不可持续的",公司、消费者和政府必须集体转变期望,让主要软件和硬件制造商对不安全的产品负责,而不是用户。 拜登政府预计将在未来几天发布一项战略,该战略将…

burp联动xray进行被动扫描

burp联动xray进行被动扫描0、简介1、打开burp,设置转发数据包,将burp抓到的数据包,额外转发到本机的7777端口2、出现这个代表配置成功3、接着在xray里输入这串代码,让xray进行监听本机的7777端口,进行被动扫描&#xf…

操作系统笔记、面试八股(二)—— 死锁

文章目录2. 死锁2.1 死锁的必要条件2.2 死锁预防2.3 死锁避免2.3.1 银行家算法2.4 死锁检测与死锁解除2.4.1 进程-资源分配图2.4.2 死锁检测的步骤2.4.3 死锁解除方法2. 死锁 2.1 死锁的必要条件 互斥 资源必须处于非共享模式,即因此只能有一个进程访问。如果有另一…

电脑崩溃蓝屏问题如何重装系统

电脑是我们日常生活和工作中必不可少的工具,但在使用过程中,难免会遇到各种问题,例如系统崩溃、蓝屏、病毒感染等,这些问题会严重影响我们的使用体验和工作效率。而小白一键重装系统可以帮助我们快速解决这些问题,本文…

精选博客系列|加速基于同态加密的隐私保护机器学习

随着机器学习在当今的企业和软件平台中的广泛使用,跨人工智能 (AI) 平台的隐私保护技术的解决方案也显得非常重要。虽然这个想法在今天看起来很明显,但人工智能研究社区历来更专注于打破数据孤岛的界限,并将数据从一个…

在线就能用的主图设计素材,免费分享!

如何给自己的店铺商品设计专属的节日活动主图?没有节日活动的主体素材要如何设计?下面小编就分享一个在线素材设计工具,打开乔拓云,平台里面不仅有许多能使用的电商设计素材,还有许多的设计工具和模板能帮助你快速的实…

macOS 13.3 Beta 2 (22E5230e)With OpenCore 0.8.9正式版 and winPE双引导分区原版镜像

原文地址:http://www.imacosx.cn/112340.html,转载需注明出处镜像特点完全由黑果魏叔官方制作,针对各种机型进行默认配置,让黑苹果安装不再困难。系统镜像设置为双引导分区,全面去除clover引导分区(如有需要…

海外服务器:为什么越来越多的人选择跨境托管?

在数字化时代,越来越多的企业和个人需要一个高效、稳定、安全的网络服务。而以独立服务器为主的海外服务器和跨境托管服务已成为满足这种需求的重要选择。在本文中,小编将探讨海外服务器和跨境托管的优势和发展趋势。一、什么是海外服务器和跨境托管?海…

如何使用GitBleed从Git库镜像中提取数据

关于GitBleed GitBleed是一款针对Git库镜像的安全检测工具,该工具包含了多个Shell脚本,可以帮助广大研究人员下载克隆的Git库和Git库镜像,然后从中提取各种数据,并分析两者之间的不同之处。 功能介绍 工具提供的脚本能够克隆指…

Django实践-02创建应用

文章目录Django实践-02创建应用Django介绍Django项目构建Django项目安装(前一篇已经装好):创建应用1. 创建app,执行下面的命令:2. 修改视图views.py3. 修改Django项目目录下的urls.py文件4.重新运行项目5. 基于模板完成…

深度包检测(DPI)详细介绍

以前不了解这个,一个应聘职位是这个方面的,就在网上收集这个资料,了解了这个方面的资料,其实,这个核心是自然语言识别。 目录 简介背景 流量识别 常用功能具体功能 做法特征识别架构举例部署方式 串接方式并接方式存…

Mac安装Redis后的配置

Mac安装Redis后的配置找到安装目录配置文件修改启动服务做测试连接找到安装目录 1.双击(右键)访达,点击前往文件夹进行查找,如下图所示 2.然后再如下图所示中找到如下路径: usr/local/bin3.找到redis.conf即redis的…

JAVA版B2B2C商城源码多商户入驻商城

三勾商城多商户是开发友好的微信小程序商城,框架支持SAAS,支持发布 iOS Android 公众号 H5 各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)等多个平台,不可多得的二开神器, 为大中小企业提供极致的移…

hadoop的运行模式

作者简介&#xff1a;大家好我是小唐同学(๑>؂<๑&#xff09;&#xff0c;好久不见&#xff0c;为梦想而努力的小唐又回来了&#xff0c;让我们一起加油&#xff01;&#xff01;&#xff01; 个人主页&#xff1a;小唐同学(๑>؂<๑&#xff09;的博客主页 目前…

SWM181 外部中断(EXTI)功能使用

SWM181 外部中断&#xff08;EXTI&#xff09;功能使用&#x1f4cc;SDK固件包&#xff1a;https://www.synwit.cn/kuhanshu_amp_licheng/ &#x1f4d6;中断案例&#xff1a; &#x1f33c;开发板如下图&#xff1a; ✨注意新手谨慎选择作为入门单片机学习。 GPIO特性介…

代码随想录-49-111.二叉树的最小深度

目录前言题目1.层序迭代思路2. 本题思路分析&#xff1a;3. 算法实现4. pop函数的算法复杂度5. 算法坑点前言 在本科毕设结束后&#xff0c;我开始刷卡哥的“代码随想录”&#xff0c;每天一节。自己的总结笔记均会放在“算法刷题-代码随想录”该专栏下。 代码随想录此题链接 …

从功能测试进阶自动化测试涨薪10k,只用了1个月...

在开始正文前&#xff0c;先给大家一碗鸡汤&#xff1a;“你要坚信时间是不会辜负每一个努力付出的人&#xff0c;当你拥有一万次的训练和沉淀后&#xff0c;生活也会还你诗和远方。” 现在有很多人经常被“想要快速看到好的结果”的“快”思维裹挟着&#xff0c;稍微在短时间…

循环删除 List 中的元素

引用&#xff1a;https://mp.weixin.qq.com/s/j3k70kB3KPGO5ZKpOxJ4Pw 问题 比如有以下这个 List&#xff1a; public List<String> initList Arrays.asList("张三", "李四", "周一", "刘四", "李强", "李白&…

【微电网_储能】基于启发式状态机策略和线性程序策略优化方法的微电网中的储能研究【给定系统约束和定价的情况下】(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密…