Java---接口讲解

文章目录

    • 1. 接口概述
    • 2. 接口特点
    • 3. 接口成员特点
    • 4. 小案例应用
    • 5. 类和接口的关系
    • 6. 抽象类和接口区别


1. 接口概述

 1. 接口是一种公共的规范标准,只要符合规范标准,大家都可以通用。Java中的接口更多的是体现在对行为的抽象。

 2. 参考生活中的接口可以理解,比如下图:

在这里插入图片描述

在这里插入图片描述

2. 接口特点

 1. 接口用关键字interface修饰:public interface 接口名{}

 2. 类实现接口用implements表示:public class 类名 implements 接口名{}

 3. 接口不能实例化。要参照多态的形式,通过实现类对象实例化,这叫接口多态。

 4. 接口的实现类:要么重写接口中的所有抽象方法,要么是抽象类。

public interface Inter {
    public abstract void jump();
}

public class Cat implements Inter {
    @Override
    public void jump() {
        System.out.println("猫可以跳高了");
    }
}

public class Demo {
    public static void main(String[] args) {
        Inter j=new Cat();
        j.jump(); //输出:猫可以跳高了
    }
}

3. 接口成员特点

 1. 成员变量:只能是常量。默认修饰符:public final。所以可以不写。

 2. 构造方法:接口没有构造方法,因为接口主要是对行为抽象的。一个类如果没有父类,默认继承Objiect

 3. 抽象方法:只能是抽象方法。默认修饰符:public abstract。所以可以不写。

public interface Inter {
   public int age=10;
   public final int age2=20;
   int age3=30;
}

public class InterImple implements Inter {}

public class Demo {
    public static void main(String[] args) {
        Inter j = new InterImple();
        //j.age=30; 会报错
        System.out.println(j.age);  //输出:10
        System.out.println(j.age2); //20
        System.out.println(j.age3); //30
        
        //直接接口.成员,也可以
        System.out.println(Inter.age3);//30
    }
}

4. 小案例应用

public abstract class Animal {
    private int age;
    private String name;
    public Animal(){}
    public Animal(String name,int age) {
        this.name = name;
        this.age = age;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public abstract void eat();
}

public interface Inter {
    public abstract void jump();
}

public class Cat extends Animal implements Inter{
    public Cat(){}
    public Cat(String name,int age){
        super(name,age);
    }
    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }

    @Override
    public void jump() {
        System.out.println("猫可以跳高");
    }
}

public class Demo {
    public static void main(String[] args) {
        Inter i=new Cat();
        i.jump();  //猫可以跳高
        Animal a=new Cat("加菲猫",5);
        System.out.println(a.getName()+" "+a.getAge()+"岁"); //加菲猫 5岁
        a.eat(); //猫吃鱼
    }
}

5. 类和接口的关系

 1. 类和类的关系:继承关系,只能单继承,但是可以多层继承。

 2. 类和接口的关系:实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口。

 3. 继承关系:可以单继承,也可以多继承。

public interface Inter1 {
}

public interface Inter2 {
}

public interface Inter3 extends Inter1,Inter2{
}

public class lei extends Object implements Inter1,Inter2,Inter3{
}

6. 抽象类和接口区别

 1. 成员区别:(1) 抽象类:变量,常量;有构造方法;有抽象方法,也有非抽象方法。 (2) 接口:常量,抽象方法。

 2. 关系区别:(1) 类与类:继承和单继承。 (2) 类与接口:实现,可以单实现也可以多实现。 (3) 接口与接口:继承,可以单继承也可以多继承。

 3. 如下面这个门的例子。再次强调:抽象类是对事物的抽象,而接口是对行为的抽象。

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/211477.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【并发编程】什么是死锁?死锁如何解决?线上发生死锁应该怎么办?

📫作者简介:小明Java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于…

前端打包添加前缀

vue2添加前缀 router的base加上前缀 export default new Router({mode: history, // 去掉url中的#base: privateDeployUrl, // 这里加上前缀scrollBehavior: () > ({y: 0}),routes: constantRoutes })vue.config.js,publicPath属性加上前缀 publicPath: proces…

大数据Doris(三十二):Doris高级功能

文章目录 Doris高级功能 一、​​​​​​​表结构变更

口罩标准讲解及推荐

一、我国医用口罩质量标准 1、YY/T0969-2013《一次性使用医用口罩》 2、YY0469-2011《医用外科口罩》 3、GB19083-2010《医用防护口罩技术要求》三类医用口罩各项指标对比如下: 结论:防护效果来说:医用防护口罩>医用外科口罩>一次性…

DouyinAPI接口系列丨Douyin商品详情数据接口丨Douyin视频详情数据接口

抖音商品详情API是抖音开放平台提供的一套API接口,用于获取商品详情信息。通过该API,开发者可以获取到商品的详细信息,包括商品ID、名称、描述、价格、销量、评价等信息。 在使用抖音商品详情API之前,需要先注册并登录抖音开放平…

智能优化算法应用:基于模拟退火算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于模拟退火算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于模拟退火算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.模拟退火算法4.实验参数设定5.算法结果6.参考…

博文小调研

感谢信 很高兴认识各位盆友,天南地北一家人! 无论身在行业差异,所处职位高低,工作年限长短,这个平台都为爱好学习的人们提供了很好的机会和进步的源动力。 博主今年自11月份开启了新的系列文章,每周发表6…

分享88个节日PPT,总有一款适合您

分享88个节日PPT,总有一款适合您 88个节日PPT下载链接:https://pan.baidu.com/s/1mfLrdlB9Y1jqz2vkVIwBNA?pwd6666 提取码:6666 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易…

充电桩自检流程

1、常规自检流程介绍 充电桩自检流程通常包括以下几个方面: 外观检查:检查充电桩外观是否完好,无损坏、严重污染等问题。连接检查:检查充电桩与电源的连接是否牢固,线缆是否完整无损。安全性检查:检查充电…

Python教程:ast.literal_eval()的示例用法

ast.literal_eval() 是一个 Python 的内置函数,它用于解析并执行一个包含 Python 文字字面值的抽象语法树(AST)。这个函数非常有用,因为它可以用来处理那些不包含任何可执行代码的字符串,但需要以一种安全的方式进行。…

神经网络 模型表示2

神经网络 模型表示2 使用向量化的方法会使得计算更为简便。以上面的神经网络为例,试着计算第二层的值: 我们令 z ( 2 ) θ ( 1 ) x {{z}^{\left( 2 \right)}}{{\theta }^{\left( 1 \right)}}x z(2)θ(1)x,则 a ( 2 ) g ( z ( 2 ) ) {{a}…

腾讯云服务器上安装nginx部署前端

1.宝塔面板 安装nginx 2.配置nginx

说一说Java中的JUC

JUC 1.什么是JUC 2.进程和线程 进程 : cpu资源分配的最小单位 线程 : cpu调度和执行的最小单位 并发是指多个任务在同一个时间段内交替执行,通过时间片轮转等方式实现任务间的切换。换句话说,并发是指多个任务能够同时存在,但不一定同时…

SpringBoot-Vue项目初始搭建

SpringBoot-Vue项目初始搭建 1、项目搭建 前提:配置过nodejs环境,安装了vuecli(如果未配置,可以参照此教程:https://www.bilibili.com/video/BV18E411a7mC/ p12) 新建文件夹(最好不要有中文) 打开cmd …

Azure Machine Learning - 在 Azure 门户中创建AI搜索技能组

你将了解 Azure AI 搜索中的技能组如何通过添加光学字符识别 (OCR)、图像分析、语言检测、文本翻译和实体识别,在搜索索引中创建可搜索文本的内容。 关注TechLead,分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&#xff…

使用dlib简单进行人脸特征点检测和换脸

0.出于好奇,思考中想要把2维图像怎么转化为3维图像,我在考虑怎么把草莓二维转为三维图像,这个领域其实早有人研究了,术语叫三维重建,使用matlab可以实现三维坐标标点来表达,后来我发现一个很好玩的事情就是我看到直播有人卖替换人脸和换装的程序,我就想试试怎么实现换脸… //ma…

Springboot3+vue3从0到1开发实战项目(二)

前面完成了注册功能这次就来写登录功能, 还是按照这个方式来 明确需求: 登录接口 前置工作 : 想象一下登录界面(随便在百度上找一张) 看前端的能力咋样了, 现在我们不管后端看要什么参数就好 阅读接口文档…

最小生成树(Minimum Spanning Tree)及生成MST的几种方法

最小生成树 (Minimum Spanning Tree) 最小生成树是图论领域的一个基本概念,适用于加权连通图,其中包括若干顶点(节点)以及连接这些顶点的边(边可以有权重)。在一个加权连通图中,生成树&#xf…

MSTP实验

目录 一、实验拓扑 二、实验要求 三、实验步骤 1、创建vlan 2、创建端口组,放通vlan 3、配置MSTP 4、配置主备奋根 一、实验拓扑 二、实验要求 1、所有交换机上创建vlan10,vlan20,vlan30和vlan40 2、所有交换机之间的端口配置为Trunk…

wordpress忘记密码怎么办?

有的时候,我们会忘记网站的密码,所以网站的密码要记住,那记不住,怎么样才可以登录后台呢?下面来给大家说一下方法,第一种方法,就是进入数据库里面修改密码,第二种就是从新搭建&#…