谈谈接口 0.0

简介: 在现实生活中,接口的例子比比皆是,比如:笔记本上的USB口,电源插座等...电脑的USB口上,可以插:U盘、鼠标、键盘...所有符合USB协议的设备。电源插座插孔上,可以插:电脑、电视机、电饭煲...接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用!那么在java中怎么定义接口呢?在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型。

目录


接口的概念


接口语法


接口的成员变量与方法


接口的使用


实现多个接口


接口的概念

在现实生活中,接口的例子比比皆是,比如:笔记本上的USB口,电源插座等...


电脑的USB口上,可以插:U盘、鼠标、键盘...所有符合USB协议的设备。


电源插座插孔上,可以插:电脑、电视机、电饭煲...


接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用!


那么在java中怎么定义接口呢?


在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型。


接口语法

通过interface定义一个接口

interface IShape {
}

接口的成员变量与方法

那么接口中的成员有哪些呢?

interface IShape {
    int a = 10;
    void draw();
}

细心的小伙伴会发现-这个draw方法没有用abstract修饰为何能这样写呢?

这是因为你这样的话编译器会默认加上下面的东西:

interface IShape {
    public static final int a = 10;
    public abstract void draw();
}

在编译器中我们也可以注意到这些是灰色的:

8b0b50a8a76f3783b3d3a9d7665affb2_9d1e64b20e4b4d47bebd1d54e4596a15.png


因此我们可以总结:


接口中的成员变量默认是 public static final修饰的


接口中的成员方法默认是 public abstract修饰的


接口当中不能有普通的方法(java8开始可以有default和static方法,可以有具体的实现)

interface IShape {
    public static final int a = 10;
    public abstract void draw();
    public static void test1() {
    }
    default void test2() {
    }
}

接口的使用

接口类型是一种引用类型,可以认为比抽象类还抽象,因此是不能new一个对象的。但是可以用关键词 implements 来实现接口。(要重写接口当中所有的抽象方法)

如下:

584d8caced75ffe95e6f418afab5fcc7_746ffbeb40e64302a1c61a6623c8d337.png

那么怎么调用呢?

接口通过向上转型和动态绑定

dbbb92025d110143539da5ccc23cde54_8cd65ecac7944e83af295d5fe8fd6e11.png

实现多个接口

在Java中,类和类之间是单继承的,一个类只能有一个父类,即Java中不支持多继承,但是一个类可以实现多个接口。

下面我们举个多接口例子:

我们先定义两个接口(跑,游泳),和一个抽象类(Animal)和一个Dog类

下面代码可以理解为:Dog是一个动物具有游泳和跑的特性

//接口1
public interface IRunning {
    void running();
}
//接口2
public interface ISwimming {
    void flying();
}
//Animal类
public abstract class Animal {
    public String name;
    public int age;
    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public abstract void eat();
}
//狗类继承Animal类实现ISwimming,IRunning接口
//可以理解为Dog是一个动物具有游泳和跑的功能
public class Dog extends Animal implements ISwimming,IRunning{
    public Dog(String name, int age) {
        super(name, age);
    }
    @Override
    public void eat() {
        System.out.println("吃狗粮");
    }
    @Override
    public void swimming() {
        System.out.println("游泳");
    }
    @Override
    public void running() {
        System.out.println("跑");
    }
}

下面演示怎么调用,写一个Test类调用。

public class Test {
    public static void test1(Animal animal) {
        animal.eat();
    }
    public static void test2(IRunning iRunning) {
        iRunning.running();
    }
    public static void test3(ISwimming iSwimming) {
        iSwimming.swimming();
    }
    public static void main(String[] args) {
        Dog dog = new Dog("汪汪队队长",10);
        test1(dog);
        test2(dog);
        test3(dog);
    }
}

51b70525bd9ec8837743e246a65d3a23_38743d578cb441b6a3e969617fadd458.png


 


目录
相关文章
|
7月前
|
XML Java 数据库连接
谈谈Java反射:从入门到实践,再到原理
谈谈Java反射:从入门到实践,再到原理
136 0
|
7月前
|
存储 C++
【C++】多态(重写)的实现过程及其原理【核心知识点精讲】(22)
【C++】多态(重写)的实现过程及其原理【核心知识点精讲】(22)
【面试题精讲】接口和抽象类有什么共同点和区别?
【面试题精讲】接口和抽象类有什么共同点和区别?
|
存储 缓存 监控
《优化接口设计的思路》系列:第二篇—接口用户上下文的设计与实现
大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。 作为一名从业已达六年的老码农,我的工作主要是开发后端Java业务系统,包括各种管理后台和小程序等。在这些项目中,我设计过单/多租户体系系统,对接过许多开放平台,也搞过消息中心这类较为复杂的应用,但幸运的是,我至今还没有遇到过线上系统由于代码崩溃导致资损的情况。这其中的原因有三点:一是业务系统本身并不复杂;二是我一直遵循某大厂代码规约,在开发过程中尽可能按规约编写代码;三是经过多年的开发经验积累,我成为了一名熟练工,掌握了一些实用的技巧。
122 0
|
5天前
|
Java 物联网
还在纠结抽象类和接口?看这篇就够了!
本文详细介绍经典又高频的Java面试题——抽象类和接口的区别,以及它们在实际开发中的应用场景。内容主要为以下五部分: 1.抽象类和接口的概念 2.抽象类和接口的区别 3.抽象类和接口的应用场景 4.面试中的答题技巧 5. 总结
|
4月前
|
JSON 前端开发 API
一文讲清 API 接口的概念、设计和实现
总结 在这个例子中,我们创建了一个简单的Express服务器,并定义了一个/api/auth/login的POST接口来处理登录请求。我们使用body-parser中间件来解析请求体中的JSON数据,并在接口内部进行简单的用户名和密码验证。
|
6月前
|
Java
接口基础知识
接口基础知识
32 1
|
7月前
|
Unix Linux 测试技术
C++封装详解——从原理到实践
C++封装详解——从原理到实践
354 0
|
7月前
|
Web App开发 JavaScript 安全
【面试题】 阿里面试官:请设计一个不能操作DOM和调接口的环境
【面试题】 阿里面试官:请设计一个不能操作DOM和调接口的环境
|
XML Java API
深入谈谈API接口的作用
深入谈谈API接口的作用